Чтение данных контроллера извне VR Rig с системой ввода на основе действий
У меня проблемы с использованием новой системы ввода на основе действий в Unity OpenXR.
Со старой (основанной на устройстве) системой ввода можно было получить объект устройства ввода извне XRRig, используя
InputDevices.GetDeviceAtXRNode(<node>)
функция.
Например: вот что я сделал бы в старой системе для получения данных о положении правого контроллера:
InputDevices.GetDeviceAtXRNode(XRNode.RightHand).TryGetFeatureValue(CommonUsages.devicePosition, out Vector3 position);
InputDevices.GetDeviceAtXRNode(XRNode.RightHand).TryGetFeatureValue(CommonUsages.deviceRotation, out Quaternion rotation);
К сожалению, я не могу найти способ сделать то же самое с новой системой ввода, основанной на действиях. Вся документация, которую я смог найти по этой теме, относится к старому способу работы. Похоже, что этот метод больше не работает.
Итак, есть ли способ получить устройство ввода извне XRRig с помощью новой системы ввода на основе действий?
В случае, если это поможет: Моя версия Unity
2020.3.4f1
и я использую версию плагина OpenXR
1.0.3
.
Любая помощь приветствуется.
1 ответ
ActionBasedController[] controllerArray = ActionBasedController.FindObjectsOfType<ActionBasedController>();
ActionBasedController controller = controllerArray[0];
Вызывая этот метод, вы получаете все
ActionBasedControllers
возвращается как массив. Контроллера можно узнать по его имени.
controller.name.Equals("Left Controller")
Значение триггера можно прочитать с помощью следующей команды:
//Trigger
controller.activateAction.action.ReadValue<float>());
//Grip
controller.selectAction.action.ReadValue<float>());