首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原HTC输入不与单元的OpenXR一起工作

原HTC输入不与单元的OpenXR一起工作
EN

Stack Overflow用户
提问于 2021-11-23 16:25:55
回答 1查看 353关注 0票数 0

我创建了一个使用统一的OpenXR的游戏。我正在努力使游戏兼容Oculus和HTC Vive。

在下面的代码中,我只是试图检测用户何时按下他们的右主按钮。这在Oculus上运行得很好,但是我已经有很多Vive用户说这不起作用。

代码语言:javascript
复制
bool primary = false;
bool secondary = false;
bool trigger = false;
bool grip = false;
public InputDevice device;

void Start()
    {
        List<InputDevice> devices = new List<InputDevice>();
        InputDevices.GetDevicesAtXRNode(XRNode.RightHand, devices);
        device = devices[0];
    }

public void Update(){
                bool newGrip;
                bool newTrigger;
                bool newSecondary;
                bool newPrimary;
                device.TryGetFeatureValue(CommonUsages.gripButton, out newGrip);
                device.TryGetFeatureValue(CommonUsages.triggerButton, out newTrigger);
                device.TryGetFeatureValue(CommonUsages.secondaryButton, out newSecondary);
                device.TryGetFeatureValue(CommonUsages.primaryButton, out newPrimary);
    
                
                if (newGrip != grip)
                {
                    if (newGrip)
                    {
                        //grip pressed
                    }
                    else
                    {
                        //grip released
                    }
                    grip = newGrip;
                }
                if (newTrigger != trigger)
                {
                    if (newTrigger)
                    {
                        //trigger pressed
                    }
                    else
                    {
                        //trigger released
                    }
                    trigger = newTrigger;
                }
                if (newSecondary != secondary)
                {
                    if (newSecondary)
                    {
                        //secondary pressed
                    }
                    else
                    {
                        //secondary released
                    }
                    secondary = newSecondary;
                }
                if (newPrimary != primary)
                {
                    if (newPrimary)
                    {
                        //primary pressed
                    }
                    else
                    {
                        //primary released
                    }
                    primary = newPrimary;
                }
}

注意,在HTC Vive和Oculus上都能很好地检测到触发器和夹子。Vive上不支持辅助按钮,所以我假设device.TryGetFeatureValue(CommonUsages.secondaryButton,out newSecondary)总是返回false。它只是给了我一个意想不到的问题的主要按钮。

现在,根据统一(https://docs.unity3d.com/Manual/xr_input.html),支持Vive的主按钮。

有人知道为什么上面的实现不能识别被按下的Vive的主按钮吗?此外,是否有任何方法来检测使用统一的OpenXR的Vive播放器的菜单按钮?上面的链接说菜单按钮是不支持的,但是有一个额外的按钮来工作将是有用的。

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2021-11-24 07:50:30

这个问题是通过转换成统一的新的基于行动的输入系统来解决的。

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

https://stackoverflow.com/questions/70084381

复制
相关文章

相似问题

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