HTC VIVE TouchPad简单方向控制
由于现在还没有设备,没法亲身体会,只能先想象一下了。
好进入正题 首先引入叉积 的数学概念
叉积
叉积的定义: c =a x b 其中a,b,c均为向量。即两个向量的叉积得到的还是向量!
性质1: c⊥a,c⊥b,即向量c垂直与向量a,b所在的平面 。
性质2: 模长|c|=|a||b|sin<a,b>
性质3: 满足右手法则 。从这点我们有axb ≠ bxa,而axb = – bxa。所以我们可以使用叉积的正负值来判断向量a,b的相对位置,即向量b是处于向量a的顺时针方向还是逆时针方向。
根据上面的性质2,我们也同样的可以计算出两个向量的夹角。
用到了性质三进行计算方向。引入控制器控制代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;public class NewBehaviourScript : MonoBehaviour {void check_key_toMove() {//获取右手控制器设备SteamVR_Controller.Device _device = SteamVR_Controller.Input((int)track.index);//检测是否按压控制器的touchpadbool isPressTouchPad= _device.GetPress(SteamVR_Controller.ButtonMask.Touchpad);float angle = 0f;//如果按了if (isPressTouchPad) {//获取按压点的坐标Vector2 touchaxis= _device.GetAxis();//产生a为参考系Vector2 a = new Vector2(0f, 1f);//进行角度计算(没有正负值不能区分方向)angle = Vector2.Angle(a, touchaxis);//叉积运算计算触摸点向量相对a是顺时针(cross.z为负)还是逆时针(cross.z为正)Vector3 cross = Vector3.Cross(a, touchaxis);angle = cross.z > 0 ? -angle : angle;if (angle <= 45 && angle > -45) {transform.forward = Vector3.forward;}else if (angle <= -45 && angle > -135) {transform.forward = Vector3.left;}else if (angle <= -135 || angle > 135){transform.forward = Vector3.back;}else if (angle <= 135 && angle > 45){transform.forward = Vector3.right;}}}
}
HTC VIVE TouchPad简单方向控制相关推荐
- HTC Vive unity 教程【转载】
原文:HTC Vive Tutorial for Unity 作者: Eric Van de Kerckhove 译者:kmyhy HTC Vive 是一个虚拟现实头盔,由 HTC 和 Valve 公 ...
- HTC Vive controller手柄运动方向识别
HTC Vive controller手柄运动方向识别 本文由catzhang 编写,转载请注明出处,所有权利保留. 博客地址:http://blog.csdn.net/cartzhang githu ...
- HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试
1.Htc Vive安装教程 在把你的头显与控制器连到电脑上之前,我们首先要做的是先安好基站.基站的背面和低端各有一个固定孔,这样你可以把基站钉在墙上或者买支架将其撑起.大三角架安装示意图 Light ...
- #HTC VIVE #进行VR开发的环境
因为一些原因,要求上周的博客缺了一篇,于是在这周补上.好了,让我们开始吧. HTC VIVE 开发中最重要的基石是steamVR,只有充分理解steamVR,才能在开发中得心应手,创造最佳的虚拟现实体 ...
- HTC VIVE 基础开发1
此文章用于自己学习过程中的记录,以便日后翻阅 开发HTC VIVE 首先需要下载Steam 平台,然后在Steam的商店里搜索Steam VR下载安装就可以了. 创建新的Unity项目 创建一个新的U ...
- VIVE开发基础(A、快速入门篇)(Yanlz+HTC+VIVE+VR+AR+MR+XR+SteamVR+CameraRig+LightHouse+HeadSet+Teleport+立钻哥哥+)
<HTC_VIVE开发基础> 版本 作者 参与者 完成日期 备注 HTC_VIVE_V01_1.0 严立钻 2018.08.23 <HTC_VIVE开发基础>发布说明: +++ ...
- 如视VR显示连不上服务器,HTC Vive播放本地视频图文教程(附常见问题解决办法)...
由于需要连接电脑设备,因而部分新手用户不懂如何使用HTC Vive播放本地视频.实际上整个操作并不复杂,只需要用到Vive Cinema播放器即可.Vive Cinema是HTC VR New Tec ...
- unity开发 HTC vive手柄控制 手柄上各个按钮的点击事件
HTC vive手柄各个按钮的响应事件,已实现的功能是按手柄上的原盘上下左右键移动,是平移,不是射线瞬移.这种方式在眼镜里太晕了. using UnityEngine; using System.Co ...
- 基于unity+HTC VIVE的室内漫游交互(教你如何“无代码”VR交互)
简单粗暴,一个插件让你无代码实现VR交互 开发环境steamVR2.0+unity2017.1.0f1 steamVR2.0下载地址 一.总体目标 Unity+HTC VIVE 开发: 1.场景漫游+ ...
最新文章
- idea 使用正则表达式 进行匹配替换
- assembly plugin实现自定义打包
- Bzoj1051 受欢迎的牛
- apache weblogic ssl linux,apache基于ssl配置weblogic(完结篇)
- python3虚拟环境使用教程_python虚拟环境完美部署教程
- “约见”面试官系列之常见面试题第二十九篇之Vue和React的区别
- between and 效率_科学家改进植物光合作用,使植物光合效率提高40%
- 滤波器开发之四:基于算术平均的中值滤波器
- 经典面试题(53):以下代码将输出的结果是什么?
- linux top 参数详解
- 上位机使用C++通过ADS协议与倍福PLC通信例程-通过变量名方式读写浮点数
- python制作二维码生成器3.0
- 19.JavaScript学习笔记——数组
- APP抓不到包及问题解决方法
- 面向开发者的 Android 8.0 Oreo 详细介绍
- 陶陶摘苹果(python)
- 适合win7的python版本_windows支持哪个版本的python
- 【SQL注入漏洞-01】SQL注入漏洞原理及分类
- 大球吃小球html5,怎么用html5制作简单的大球吃小球的游戏
- 企业认缴出资什么意思
热门文章
- c语言 string.h 详解
- 高精度光纤激光切割机,光纤激光切割厂家
- Myth源码解析系列之一-项目简介
- python与机器人王国_【工业机器人】盘点日本最值得关注的工业机器人13大巨头!...
- 『2023新星计划』就我个人经历来谈谈为什么要参加新星计划
- 计算机算法设计与分析(第4版) 王晓东 著 2012.2 笔记(这本书还不错,偏实用、有难度)
- 三极管的介绍及工作原理
- 监控linux资源的软件,6个监控linux系统资源的快速工具
- 第二个项目做完了,总结一下~~
- 管理运筹学软件计算机解咋看,第3章 线性规划问题的计算机求解_中国地质大学(武汉):管理运筹学(郭海湘)_ppt_大学课件预览_高等教育资讯网...