我目前能够以统一方式调用Vive控制器上的所有输入,但触摸板的方向输入除外。
如何访问用户按下的方向?
以下是我一直试图使用的“EVRButtonId.k_EButton_DPad_Up”,但没有成功。
答案 0 :(得分:3)
我有同样的问题。我为解决这个问题所做的是:
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]。我不确定这是否是最佳方式,我可能会怀疑,但它的确有效,目前在帮助方面并不多。
答案 1 :(得分: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;