[英]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.