您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 43Unity5使用HTC-VIVE-SDK一些常用按键方法
1/6Unity5使用HTCVIVESDK一些常用按键方法我们从导入SteamVR开始,打开Unity创建一个空的工程。菜单栏选择WindowAssetStore,在商店里搜索SteamVR并下载导入。这就是给大家提供的SDK。也可以直接在网页下载:此处忽略HTCVIVE的链接方法,不会的大家可以百度搜索链接方式,也很简单。当我们确定连线都没有问题并导入SDK后打开参考场景里面给的参考代码解读一下VIVE手柄的按键事件。打开AssetsSteamVRExtras下的SteamVR_TestThrow这个场景,这里面是一个扣动手柄扳机按键后的例子。我们可以找到场景中【CameraRig】下有两个名为Controller的子物体,这个就是我们VIVE的两个手柄,我们打开其中一个Controller下的脚本SteamVR_TestThrow。我们可以看到device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger),这个就是我们的一个扣动扳机的一个事件响应。如果扣动扳机按下就返回true否则false。像手柄上的抓握位置的按键,菜单的按键都是同理。比较复杂的就是手柄上的触摸板,触摸板分为两种触发方式,按动与触摸。无论是触摸还是按动都是通过返回一个Vector2的坐标确定触摸与2/6按下的位置。触摸板的坐标是以中间为原点(0,0),X与Y值最小值为-1最大值为1的圆形坐标系。扳机键Trigger菜单键ApplicationMenu抓握键Grip触摸板Touchpad接下来废话不多说我们直接上代码。usingUnityEngine;usingSystem.Collections;usingValve.VR;publicclassSteamVR_TestContral:MonoBehaviour{SteamVR_TrackedObjectTransfromObj;//UsethisforinitializationvoidAwake(){TransfromObj=GetComponentSteamVR_TrackedObject();}//UpdateiscalledonceperframevoidFixedUpdate(){vardevice=SteamVR_Controller.Input((int)TransfromObj.index);3/6//扳机键if(device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger)){Debug.Log(你按下了扳机键);}if(device.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger)){Debug.Log(你按松开扳机键);}if(device.GetTouch(SteamVR_Controller.ButtonMask.Trigger)){Debug.Log(你正按着扳机键);}//菜单键if(device.GetTouchDown(SteamVR_Controller.ButtonMask.ApplicationMenu)){Debug.Log(你按下了菜单键);}//抓握按键手柄左右两侧的抓握按键为一个按键if(device.GetTouchDown(SteamVR_Controller.ButtonMask.Grip)){Debug.Log(你正紧握);}4/6if(device.GetTouchUp(SteamVR_Controller.ButtonMask.Grip)){Debug.Log(你松开了);}//下面是触摸板事件我们通过判断坐标是否超过0.5来判断按了哪个if(device.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad)){if(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad).y0.5f){Debug.Log(你按下了触摸板的上);}elseif(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad).y-0.5){Debug.Log(你按下了触摸板的下);}if(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad).x0.5f){Debug.Log(你按下了触摸板的右);}elseif(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad).x-0.5f)5/6{Debug.Log(你按下了触摸板的左);}}if(device.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad)){if(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad).y0.5f){Debug.Log(你触摸了触摸板的上);}elseif(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad).y-0.5){Debug.Log(你触摸了触摸板的下);}if(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad).x0.5f){Debug.Log(你触摸了触摸板的右);}elseif(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad).x-0.5f)6/6{Debug.Log(你触摸了触摸板的左);}}}}大家可以自己编写脚本并挂到Controller也就是手柄的Gameobject上来测试了。
本文标题:43Unity5使用HTC-VIVE-SDK一些常用按键方法
链接地址:https://www.777doc.com/doc-5905222 .html