2016-03-28 9 views
1

現在、タッチパッドからの指向性入力を除いて、私のViveコントローラのすべての入力を単一で呼び出すことができます。SteamVRタッチパッド指向性入力

ユーザーが押している方向にはどうすればアクセスできますか?

ここで私は "EVRButtonId.k_EButton_DPad_Up"を使用しようとしていますが、成功しませんでした。

答えて

3

私は同じ問題を持っていた:

は、しかし、その上にプレーヤーのプレスがあれば、右パッドのx、パッドのy座標を与えるこれを試してみてください。私がこの問題を回避するためにしたのは、次のとおりです。

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])を使用したタッチパッドの右側の例です。これが最良の方法であるかどうかは確信があります。しかし、それは動作し、助けの面で現在そこに多くはありません。

0

.NET/C#のHTC VIVE APIで少し作業しました。私はパッドのいくつかの問題を抱えていました。なぜなら、プレーヤーがパッドのボタンを押さずにパッドに触れているかどうかを知ることができず、プレーヤーがパッドに触れていないときにAPIがそれは触覚パッドなので、少しランダムな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;