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<SteamVR_Action_Vector2>("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插件使用指南

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值