我启用了统一的OpenXR VR模式。

然后,我启用了HTC Vive交互配置文件和其他

在此之后,我可以看到世界,我可以得到宏达电Vive控制器的手位置,但我无法得到任何输入,我如何才能得到例如触发按钮按事件?

我使用以下代码:
private UnityEngine.XR.InputDevice inputDevice;
public bool isIndexTriggerPressed()
{
bool triggerValue = false;
inputDevice.TryGetFeatureValue(UnityEngine.XR.CommonUsages.triggerButton, out triggerValue);
if ((!previousIndexTriggerPressed) && (triggerValue))
{
previousIndexTriggerPressed = triggerValue;
return true;
}
previousIndexTriggerPressed = triggerValue;
return false;
}这是正确的代码吗?,我如何才能得到触发按事件?
发布于 2021-10-19 14:55:52
我让它工作的唯一方法是直接使用SteamVR统一插件。
我将"CameraRig“对象拖到了我的场景中,该对象被本地化在SteamVR/Prefabs目录上。
我使用了以下代码来获取输入:
private GameObject controller;
private SteamVR_Input_Sources inputDevice = SteamVR_Input_Sources.LeftHand;
public void setInputDevice(SteamVR_Input_Sources inputDevice)
{
this.inputDevice = inputDevice;
}
public void setController(GameObject controller)
{
this.controller = controller;
}
public GameObject getController()
{
return controller;
}
public Vector2 getTrackPad()
{
return SteamVR_Actions.default_Trackpad.GetAxis(inputDevice);
}
public bool isHandTrigger()
{
return SteamVR_Actions.default_GrabGrip.GetState(inputDevice);
}
public bool isHandTriggerPressed()
{
return SteamVR_Actions.default_GrabGrip.GetStateDown(inputDevice);
}
public bool isHandTriggerReleased()
{
return SteamVR_Actions.default_GrabGrip.GetStateUp(inputDevice);
}
public bool isIndexTrigger()
{
return SteamVR_Actions.default_GrabPinch.GetState(inputDevice);
}
public bool isIndexTriggerPressed()
{
return SteamVR_Actions.default_GrabPinch.GetStateDown(inputDevice);
}
public bool isIndexTriggerReleased()
{
return SteamVR_Actions.default_GrabPinch.GetStateUp(inputDevice);
}
public bool isMenu()
{
return SteamVR_Actions.default_Menu.GetState(inputDevice);
}
public bool isMenuPressed()
{
return SteamVR_Actions.default_Menu.GetStateDown(inputDevice);
}
public bool isMenuReleased()
{
return SteamVR_Actions.default_Menu.GetStateUp(inputDevice);
}不要忘记绑定窗口-> SteamVR输入


https://stackoverflow.com/questions/69605811
复制相似问题