首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在统一中使用SteamVR获取OpenXR输入?

如何在统一中使用SteamVR获取OpenXR输入?
EN

Stack Overflow用户
提问于 2021-10-17 15:25:08
回答 1查看 1.2K关注 0票数 0

我启用了统一的OpenXR VR模式。

然后,我启用了HTC Vive交互配置文件和其他

在此之后,我可以看到世界,我可以得到宏达电Vive控制器的手位置,但我无法得到任何输入,我如何才能得到例如触发按钮按事件?

我使用以下代码:

代码语言:javascript
复制
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;
    }

这是正确的代码吗?,我如何才能得到触发按事件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-19 14:55:52

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

我将"CameraRig“对象拖到了我的场景中,该对象被本地化在SteamVR/Prefabs目录上。

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

代码语言:javascript
复制
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输入

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69605811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档