由于现在还没有设备,没法亲身体会,只能先想象一下了。

好进入正题 首先引入叉积 的数学概念

叉积 
  叉积的定义: 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简单方向控制相关推荐

  1. HTC Vive unity 教程【转载】

    原文:HTC Vive Tutorial for Unity 作者: Eric Van de Kerckhove 译者:kmyhy HTC Vive 是一个虚拟现实头盔,由 HTC 和 Valve 公 ...

  2. HTC Vive controller手柄运动方向识别

    HTC Vive controller手柄运动方向识别 本文由catzhang 编写,转载请注明出处,所有权利保留. 博客地址:http://blog.csdn.net/cartzhang githu ...

  3. HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

    1.Htc Vive安装教程 在把你的头显与控制器连到电脑上之前,我们首先要做的是先安好基站.基站的背面和低端各有一个固定孔,这样你可以把基站钉在墙上或者买支架将其撑起.大三角架安装示意图 Light ...

  4. #HTC VIVE #进行VR开发的环境

    因为一些原因,要求上周的博客缺了一篇,于是在这周补上.好了,让我们开始吧. HTC VIVE 开发中最重要的基石是steamVR,只有充分理解steamVR,才能在开发中得心应手,创造最佳的虚拟现实体 ...

  5. HTC VIVE 基础开发1

    此文章用于自己学习过程中的记录,以便日后翻阅 开发HTC VIVE 首先需要下载Steam 平台,然后在Steam的商店里搜索Steam VR下载安装就可以了. 创建新的Unity项目 创建一个新的U ...

  6. 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开发基础>发布说明: +++ ...

  7. 如视VR显示连不上服务器,HTC Vive播放本地视频图文教程(附常见问题解决办法)...

    由于需要连接电脑设备,因而部分新手用户不懂如何使用HTC Vive播放本地视频.实际上整个操作并不复杂,只需要用到Vive Cinema播放器即可.Vive Cinema是HTC VR New Tec ...

  8. unity开发 HTC vive手柄控制 手柄上各个按钮的点击事件

    HTC vive手柄各个按钮的响应事件,已实现的功能是按手柄上的原盘上下左右键移动,是平移,不是射线瞬移.这种方式在眼镜里太晕了. using UnityEngine; using System.Co ...

  9. 基于unity+HTC VIVE的室内漫游交互(教你如何“无代码”VR交互)

    简单粗暴,一个插件让你无代码实现VR交互 开发环境steamVR2.0+unity2017.1.0f1 steamVR2.0下载地址 一.总体目标 Unity+HTC VIVE 开发: 1.场景漫游+ ...

最新文章

  1. idea 使用正则表达式 进行匹配替换
  2. assembly plugin实现自定义打包
  3. Bzoj1051 受欢迎的牛
  4. apache weblogic ssl linux,apache基于ssl配置weblogic(完结篇)
  5. python3虚拟环境使用教程_python虚拟环境完美部署教程
  6. “约见”面试官系列之常见面试题第二十九篇之Vue和React的区别
  7. between and 效率_科学家改进植物光合作用,使植物光合效率提高40%
  8. 滤波器开发之四:基于算术平均的中值滤波器
  9. 经典面试题(53):以下代码将输出的结果是什么?
  10. linux top 参数详解
  11. 上位机使用C++通过ADS协议与倍福PLC通信例程-通过变量名方式读写浮点数
  12. python制作二维码生成器3.0
  13. 19.JavaScript学习笔记——数组
  14. APP抓不到包及问题解决方法
  15. 面向开发者的 Android 8.0 Oreo 详细介绍
  16. 陶陶摘苹果(python)
  17. 适合win7的python版本_windows支持哪个版本的python
  18. 【SQL注入漏洞-01】SQL注入漏洞原理及分类
  19. 大球吃小球html5,怎么用html5制作简单的大球吃小球的游戏
  20. 企业认缴出资什么意思

热门文章

  1. c语言 string.h 详解
  2. 高精度光纤激光切割机,光纤激光切割厂家
  3. Myth源码解析系列之一-项目简介
  4. python与机器人王国_【工业机器人】盘点日本最值得关注的工业机器人13大巨头!...
  5. 『2023新星计划』就我个人经历来谈谈为什么要参加新星计划
  6. 计算机算法设计与分析(第4版) 王晓东 著 2012.2 笔记(这本书还不错,偏实用、有难度)
  7. 三极管的介绍及工作原理
  8. 监控linux资源的软件,6个监控linux系统资源的快速工具
  9. 第二个项目做完了,总结一下~~
  10. 管理运筹学软件计算机解咋看,第3章 线性规划问题的计算机求解_中国地质大学(武汉):管理运筹学(郭海湘)_ppt_大学课件预览_高等教育资讯网...