簡體   English   中英

原始 HTC Vive 輸入不適用於 Unit 的 OpenXR

[英]Original HTC Vive inputs not working with Unit's OpenXR

我創建了一個使用 Unity 的 OpenXR 的游戲。 我正在嘗試使游戲與 Oculus 和 HTC Vive 兼容。

在下面的代碼中,我只是想檢測用戶何時按下右主按鈕。 這在 Oculus 上工作得很好,但我有很多 Vive 用戶說這不起作用。

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 播放器的菜單按鈕? 上面的鏈接說不支持菜單按鈕,但是有一個額外的按鈕可以使用會很有用。

先感謝您!

該問題通過轉換為統一的新的基於動作的輸入系統得到解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM