Unity3d 使用基于动作的输入系统从外部VR装备读取控制器数据
我在Unity OpenXR中使用新的基于动作的输入系统时遇到问题 使用旧的(基于设备的)输入系统,可以使用Unity3d 使用基于动作的输入系统从外部VR装备读取控制器数据,unity3d,virtual-reality,openxr,Unity3d,Virtual Reality,Openxr,我在Unity OpenXR中使用新的基于动作的输入系统时遇到问题 使用旧的(基于设备的)输入系统,可以使用InputDevices.GetDeviceAtXRNode()函数从XR装备外部检索输入设备对象 例如:这是我在旧系统中检索右手控制器位置数据的方法: InputDevices.GetDeviceAtXRNode(XRNode.RightHand).TryGetFeatureValue(CommonUsages.devicePosition, out Vector3 position);
InputDevices.GetDeviceAtXRNode()
函数从XR装备外部检索输入设备对象
例如:这是我在旧系统中检索右手控制器位置数据的方法:
InputDevices.GetDeviceAtXRNode(XRNode.RightHand).TryGetFeatureValue(CommonUsages.devicePosition, out Vector3 position);
InputDevices.GetDeviceAtXRNode(XRNode.RightHand).TryGetFeatureValue(CommonUsages.deviceRotation, out Quaternion rotation);
不幸的是,我找不到一种方法来用新的基于动作的输入系统做同样的事情。我能找到的关于这个主题的所有文档都引用了老方法。这种方法似乎不再有效
那么,有没有办法使用新的基于动作的输入系统从XR装备外部检索输入设备
如果有帮助:我的Unity版本是2020.3.4f1
,我使用的是OpenXR插件版本1.0.3
非常感谢您的帮助
ActionBasedController[] controllerArray = ActionBasedController.FindObjectsOfType<ActionBasedController>();
ActionBasedController controller = controllerArray[0];
可通过以下命令读取触发值:
//Trigger
controller.activateAction.action.ReadValue<float>());
//Grip
controller.selectAction.action.ReadValue<float>());
//触发器
controller.activateAction.action.ReadValue());
//握
controller.selectAction.action.ReadValue());
这正是我想要的,谢谢!
//Trigger
controller.activateAction.action.ReadValue<float>());
//Grip
controller.selectAction.action.ReadValue<float>());