0

我在 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;
    }

这是正确的代码吗?,我怎样才能获得触发按下事件?

4

1 回答 1

0

我让它工作的唯一方法是直接使用 SteamVR Unity 插件。

我将位于 SteamVR/Prefabs 目录中的“[CameraRig]”对象拖到我的场景中。

我使用以下代码获取输入:

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 输入

在此处输入图像描述

在此处输入图像描述

于 2021-10-19T14:55:52.300 回答