SteamVR几乎是每一个使用Vive设备和Unity开发虚拟现实产品的必备插件了,今天我在这里记录一下使用SteamVR来获取手柄的交互输入信息的方法,以供参考。
首先我们需要使用SteamVR_TrackedObject类型的对象,这个脚本会附着在CameraRig的子物体Controller中,其中包括了控制SteamVR手柄的脚本。我们可以使用属性访问器来实现对输入信息的获取。
private SteamVR_TrackedObject trackedObj;
private SteamVR_Controller.Device Controller
{
get
{
return SteamVR_Controller.Input((int)trackedObj.index);
}
}
我们同样需要在初始化时获取到手柄的SteamVR_Controller脚本:
void Awake()
{
trackedObj = GetComponent<SteamVR_TrackedObject>();
}
这样我们就可以通过使用Controller来直接获取SteamVR_Controller.Input信息了
下面我们在Update函数中检测手柄的输入信息:
void Update()
{
// 获取手指在touchpad上的位置并输出
if (Controller.GetAxis() != Vector2.zero)
{
Debug.Log(gameObject.name + Controller.GetAxis());
}