我目前能夠調用我的Vive控制器上的所有輸入,除了觸摸板的方向輸入外。SteamVR觸摸板方向輸入
如何訪問用戶按下的方向?
這是我一直在嘗試使用「EVRButtonId.k_EButton_DPad_Up」,但沒有成功。
我目前能夠調用我的Vive控制器上的所有輸入,除了觸摸板的方向輸入外。SteamVR觸摸板方向輸入
如何訪問用戶按下的方向?
這是我一直在嘗試使用「EVRButtonId.k_EButton_DPad_Up」,但沒有成功。
我有同樣的問題。我做了什麼來繞過這個問題是:
if(Controller.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0)[0] > 0.8f
&& Controller.GetPressDown(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad))
{
// code continues...
}
這似乎工作。基本上,我只是使用了一個事實,即我們知道什麼時候按下了鍵盤,而且我們知道鍵盤用戶正在觸摸的位置。
這個特殊的例子是在觸摸板的右側使用X軸(GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0)[0]。我不確定這是否是最好的方法,我可能會懷疑它,但它的工作原理和目前沒有太多的幫助。
我在.NET/C#中使用了HTC VIVE API。我遇到了一些墊子問題,因爲我不知道玩家是否在沒有按下墊子按鈕的情況下觸摸墊子,並且您會發現當玩家沒有觸摸墊子時,API會給出一個稍微隨機的x,y位置,因爲它是一個觸感墊。
但是試試這個,如果它的播放機。它給出正確的墊x,則墊的y位置:
//Get the right device
rightDevice = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.FarthestRight);
//Check if the device is valid
if(rightDevice == -1){return Vector2.zero;}
//Get the x,y position on the pad
Vector2 touch = SteamVR_Controller.Input(rightDevice).GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0);
//Check if the player press on the pad button
if(!SteamVR_Controller.Input(deviceDroite).GetPress(SteamVR_Controller.ButtonMask.Touchpad)){return Vector2.zero}
return touch;