Чтение данных контроллера извне 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>());
Другие вопросы по тегам