前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VR开发--HTC Vive基础(1):按键操作

VR开发--HTC Vive基础(1):按键操作

作者头像
孙寅
发布2020-06-02 17:08:26
1.1K0
发布2020-06-02 17:08:26
举报
文章被收录于专栏:宜达数字
1、手柄的详细介绍。

手柄对象一栏: http://www.jianshu.com/p/c28fbf480cff

2、获取手柄上按键的对应信息
2-1 :获取手柄编号
代码语言:javascript
复制
        // 手柄组件
        Left = GetComponent<SteamVR_TrackedObject>();
        // 获取手柄编号(左手柄  == 2)
        Debug.Log((int)Left.index);

在手柄上挂载此脚本

打印结果

2-2 : 获取扳机按键
代码语言:javascript
复制
       // 按下了扳机按钮调用
        if (device.GetTouch(SteamVR_Controller.ButtonMask.Trigger))
        {
            Debug.Log("trigger");
        }

第二种方式也是Ok的
if (device.GetPressDown(Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger))
        {
            print("123");
        }
代码语言:javascript
复制
        // 按下手柄左右的对称按钮调用,而且调用频率跟刷新频率一致
        if (device.GetTouch(SteamVR_Controller.ButtonMask.Grip))
        {
            Debug.Log("Grip");
        }
2-3:获取grid
代码语言:javascript
复制
       // 按下手柄左右的对称按钮调用,而且调用频率跟刷新频率一致
        if (device.GetTouch(SteamVR_Controller.ButtonMask.Grip))
        {
            Debug.Log("Grip");
        }
2-4:获取圆盘
代码语言:javascript
复制
 // 当手放置在触摸圆盘上的时候调用
        if (device.GetTouch(SteamVR_Controller.ButtonMask.Touchpad))
        {
            Debug.Log("touchpad");
        }

       // 当手放置在触摸圆盘上的时候调用
        if (device.GetTouch(SteamVR_Controller.ButtonMask.Touchpad))
        {
            Debug.Log("touchpad");
            // 获取触摸板上的坐标
            Vector2 pad = device.GetAxis();
           // Debug.Log("按下了" + pad);
           
            // 转换角度
            Vector3 cross = Vector3.Cross(new Vector2(1, 0), pad);
            float angle = Vector2.Angle(new Vector2(1, 0), pad);
            float ang = cross.z > 0 ? -angle : angle;
            Debug.Log(ang);  
            //根据角度来判断上下左右四个范围
                    
        }
2-5:关于Axis
代码语言:javascript
复制
        // 按下面板的时候打印
        if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Axis0))
        {
            Debug.Log("Axis0");
        }
        // 按下扳机键的时候打印
        if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Axis1))
        {
            Debug.Log("Axis1");
        }
    其他的Axis2,3,4暂时还没有什么能够触发
3、手柄的震动
代码语言:javascript
复制
             //左手震动  
            var device1 = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Leftmost);
            SteamVR_Controller.Input(device1).TriggerHapticPulse(2000);
            // 获取左右手柄的标志
            var device2 = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Rightmost);
            // 设置获取手柄的震动值
            SteamVR_Controller.Input(device2).TriggerHapticPulse(100);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、手柄的详细介绍。
  • 2、获取手柄上按键的对应信息
    • 2-1 :获取手柄编号
      • 2-2 : 获取扳机按键
        • 2-3:获取grid
          • 2-4:获取圆盘
            • 2-5:关于Axis
            • 3、手柄的震动
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档