unity开发 HTC vive手柄控制 手柄上各个按钮的点击事件
HTC vive手柄各个按钮的响应事件,已实现的功能是按手柄上的原盘上下左右键移动,是平移,不是射线瞬移。这种方式在眼镜里太晕了。
using UnityEngine;
using System.Collections;public class Move : MonoBehaviour {/// <summary> /// 手柄位置 /// </summary> SteamVR_TrackedObject tracked;/// <summary> /// 玩家 /// </summary> public Transform player;/// <summary> /// 方向 /// </summary> public Transform dic;/// <summary> /// 速度 /// </summary> public float speed;void Awake(){//获取手柄控制 tracked = GetComponent<SteamVR_TrackedObject>();}// Use this for initialization void Start(){}// Update is called once per frame void FixedUpdate(){var deviceright = SteamVR_Controller.Input((int)tracked.index);//按下圆盘键 if (deviceright.GetPress(SteamVR_Controller.ButtonMask.Touchpad)){Vector2 cc = deviceright.GetAxis();float angle = VectorAngle(new Vector2(1, 0), cc);//下 if (angle > 45 && angle < 135){player.Translate(-dic.forward * Time.deltaTime * speed);}//上 else if (angle < -45 && angle > -135){//Debug.Log("上"); player.Translate(dic.forward * Time.deltaTime * speed);}//左 else if ((angle < 180 && angle > 135) || (angle < -135 && angle > -180)){//Debug.Log("左"); player.Translate(-dic.right * Time.deltaTime * speed);}//右 else if ((angle > 0 && angle < 45) || (angle > -45 && angle < 0)){//Debug.Log("右"); player.Translate(dic.right * Time.deltaTime * speed);}}else if (deviceright.GetPressDown(SteamVR_Controller.ButtonMask.Trigger)){Debug.Log("按下扳机键");}else if (deviceright.GetPressDown(SteamVR_Controller.ButtonMask.Grip)){Debug.Log("按下手柄侧键");}else if (deviceright.GetPressDown(SteamVR_Controller.ButtonMask.ApplicationMenu)){Debug.Log("按下手柄菜单键");}else if (deviceright.GetPressDown(SteamVR_Controller.ButtonMask.ApplicationMenu)){Debug.Log("按下手柄菜单键");}}/// <summary> /// 根据在圆盘才按下的位置,返回一个角度值 /// </summary> /// <param name="from"></param> /// <param name="to"></param> /// <returns></returns> float VectorAngle(Vector2 from, Vector2 to){float angle;Vector3 cross = Vector3.Cross(from, to);angle = Vector2.Angle(from, to);return cross.z > 0 ? -angle : angle;}
}
unity开发 HTC vive手柄控制 手柄上各个按钮的点击事件相关推荐
- GJM:Unity开发HTC vive 三、远处拖动3D物体 【转载】
腾讯GAD 窗间风月 原文URL : http://gad.qq.com/article/detail/7192223 版权所有,禁止匿名转载:禁止商业使用:禁止个人使用. 在项目中会需要拖动远处的 ...
- Unity开发HTC vive 五、拾取和触碰
Unity开发HTC vive 五.拾取和触碰 <div class="article_manage clearfix"><div class="art ...
- unity 开发HTC vive UI的交互
在HTC的VRTK插件里UI的交互最常见的就是依靠手柄发出一条射线然后和界面进行交互. 在VRTK里发出射线的脚本有两个VRTK_SimplePointer脚本和VRTK_BezierPointer脚 ...
- Unity2020使用Steam VR开发HTC VIVE Cosmos
Unity2020使用Steam VR开发HTC VIVE Cosmos 版本 配置手柄输入控制 版本 Unity:2020.2.1 HTC插件:最新版本2.0 配置手柄输入控制 2.0steamvr ...
- HTC Vive controller手柄运动方向识别
HTC Vive controller手柄运动方向识别 本文由catzhang 编写,转载请注明出处,所有权利保留. 博客地址:http://blog.csdn.net/cartzhang githu ...
- 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )
文章目录 一.添加按钮控件 二.修改按钮文本 三.为按钮添加点击事件 ( 弹出对话框 ) 四.为按钮添加点击事件 ( 打开记事本 ) 五.为按钮添加点击事件 ( 打开计算器 ) 六.去掉系统调用时弹出 ...
- 【Visual Studio 2019】创建 MFC 桌面程序 ( 安装 MFC 开发组件 | 创建 MFC 应用 | MFC 应用窗口编辑 | 为按钮添加点击事件 | 修改按钮文字 | 打开应用 )
文章目录 一.安装 MFC 开发组件 二.创建 MFC 应用 三.MFC 应用窗口编辑 四.为按钮添加点击事件 五.修改按钮文字 六.打开系统其它应用 七.博客源码 一.安装 MFC 开发组件 打开 ...
- 基于Unity的HTC Vive虚拟现实交互开发(一)环境配置
环境配置 在本篇文章中,我们将重点介绍通过Unity3D来对HTC Vive进行基础的环境配置. 在这个系列的前几篇文章中都是为了之后的开发做准备工作. HTC Vive 进行VR开发的前提是你要有一 ...
- Unity的HTC VIVE SDK研究(手柄按键功能的研究,比较详细)
http://blog.csdn.net/ystistheking/article/details/51553237 想交流的朋友我们可以微博互粉,我的微博黑石铸造厂厂长 ,缺粉丝啊 .....求粉求 ...
最新文章
- 48个Python练手项目(附详细教程)
- 第八篇、盒子模型和距中的设置方法
- 测试数据精准对比的思考
- tesseract-ocr使用以及训练方法
- C++中的引用(257BinaryTreePath)
- VBA实现数据库中的字段处理(下划线去掉,后面的字母变大写)之版本1.1。
- max日期最大值为0_【SQL】SQL面试50题思路解答与分类整理(下)CASE与日期函数...
- 解决jsp页面乱码问题
- Liferay7 BPM门户开发之15: Liferay开发体系简介
- 微信和QQ,终于可以互通了!
- 绕过tp路由器管理密码_TP-LINK 无线路由器设置详解
- 循环制比赛要赢几场可能(一定)晋级
- 解决%d format: a number is required, not str问题【一试灵】
- 35岁的程序员:第44章,宿命
- 4、基础理论-平衡软件项目的质量与时间、范围、成本
- react+mobx+jquery构建大型工具项目经验总结
- Android10的WIFI 名称读取为空解决
- xp 计算机没装网络控制器,XP系统如何安装没有线网卡驱动?
- zookeeper的脑裂问题
- 用友U8 cloud,信创云ERP的数智先锋