Unity中SteamVR2.0 手柄交互调用方式

再次接触到HTC Vive项目时发现交互已经跟几年前的写法不一样了,而且VRTK插件也需要找对应的版本才行,否则会报错,版本已经不兼容。
这里总结下我在项目中遇到的手柄交互在Unity中的调用:

1、手柄各个按键:

 if (SteamVR_Input.GetStateDown("default", "InteractUI", SteamVR_Input_Sources.Any) )
  {
      Debug.Log("按下了Trigger按键");
  }else  if (SteamVR_Input.GetStateDown("default", "Teleport", SteamVR_Input_Sources.Any) )
  {
      Debug.Log("按下了大圆盘按键");
  }
  }

3、手柄大圆盘控制物体上下左右移动:

 if (SteamVR_Input.GetState("default", "Teleport", SteamVR_Input_Sources.RightHand)|| Input.GetKey(KeyCode.Space))
        {
            SteamVR_Action_Vector2 actionSteering = SteamVR_Input.GetAction("buggy", "Steering");
            Vector2 pos = actionSteering.GetAxis(SteamVR_Input_Sources.RightHand);
            float angle = VectorAngle(new Vector2(1, 0), pos);
            //下
            if ((angle > 45 && angle < 135)|| Input.GetKey(KeyCode.S))
            {
                this.transform.Translate(Vector3.back * speed * Time.deltaTime);
            }
            //上  
            else if ((angle < -45 && angle > -135) || Input.GetKey(KeyCode.W))
            {
                //Debug.Log("上");
                this.transform.Translate(Vector3.forward * Time.deltaTime * speed);
            }
            //左  
            else if ((angle < 180 && angle > 135) || (angle < -135 && angle > -180)|| Input.GetKey(KeyCode.A))
            {
                //Debug.Log("左");
                this.transform.Translate(Vector3.left * Time.deltaTime * speed);
            }
            //右  
            else if ((angle > 0 && angle < 45) || (angle > -45 && angle < 0) || Input.GetKey(KeyCode.D))
            {
                //Debug.Log("右");
                this.transform.Translate(Vector3.right * Time.deltaTime * speed);
            }
     }

更多关于Steam2.0插件内容请查看以下链接:
大神总结的关于Steam2.0插件使用指南

你可能感兴趣的:(unity,htc,steam)