Как получить входы SteamVR с помощью OpenXR в Unity?
Я включил в Unity режим OpenXR VR.
Затем я включил профиль взаимодействия HTC Vive и другие
После этого я могу видеть мир, и я могу получить положение рук контроллера HTC 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;
}
Это правильный код? Как я могу получить событие нажатия триггера?
1 ответ
Единственный способ заставить его работать - использовать непосредственно плагин SteamVR Unity.
Я перетащил объект «[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