【unity HoloLens2】触碰了物体但没反应,触碰了一次却调用多次,HoloLens2的touch触发机制探究

开发项目时发现,有时候触碰了物体却没有触发touch事件,有时候触碰了一次物体,却触发了两次事件,经过测试发现是因为touch事件的触发机制有关。

NearInteractionTouchable触发方向和触发面

要想有touch事件,需要用到一个必要的脚本——NearInteractionTouchable,这是MRTK中提供的,这个脚本中有几个参数——LocalForwardLocalup、Lcoalcenter、Bounds,其中localforward和localUp比较关键,它们会决定以哪个方向哪个面的触碰来触发touch事件;剩下两个参数可以在前两个参数修改完之后fix一下(MRTK提供了的方法)如下图所示。

而在添加了该脚本之后,在unity中就可以看到场景中的物体上出现了一个白色箭头,和与collider某一面重合的白色框 (注意:需要在unity编辑器的Hierarchy面板中选中那个物体,才会出现),这便是可以触发touch事件的方向和面,如下图所示。

触碰测试


可以看到,白色框在4面,箭头朝外,此时触碰1面没有触发事件,触碰4面,可以触发事件,也就是说白色的框所在的collider的那个面,才是触发面,那么从物体内部触碰4面可以触发事件吗?可以。

触碰一次却导致多次事件调用

通过上面这gif图,可以看到,手部穿过4面进入物体,触发了一次事件,从4面穿出来,又触发了一次,也就是说4面作为触发面,只要是手部穿过就会触发事件。

那么在实际操作时,操作的手完全穿过触发面,并进入物体内部,那么此时操作者会本能将手收回来,但这会导致手部再次穿过触发面导致触发事件,这就会导致好像我明明只触碰了一次面,却触发多次事件。那么如何解决?

关掉collider来防止多次触碰

触发检测是基于collider的,所以只要我们将该物体collider关掉就可以停止该物体的触碰检测,也就是在OnTouchStarted或者OnTouchCompleted时,立刻写一个GetComponent<Collider>().enabled = false;将物体的collider关掉,之后再写需要执行的代码即可。

如果该物体之后还需要触碰交互,可以随时将collider开起来。

【unity HoloLens2】触碰了物体但没反应,触碰了一次却调用多次,HoloLens2的touch触发机制探究相关推荐

  1. Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装

    Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 目录 Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 一.简单介绍 二.实现原理 三.注意事项 四.效果预览 ...

  2. UNITY polygon collider不随物体旋转

    UNITY polygon collider不随物体旋转 U3D中的一般包围框如 boxcollider, meshcollider, capsule collider等都会随物体旋转而旋转.然而po ...

  3. unity平行光太亮?物体发白?可能你使用了2个或多个平行光

    unity平行光太亮?物体发白?可能你使用了2个或多个平行光 今天做项目时就遇到了这个问题,光亮得让物体发白 发现加载的场景 里面有个 平行光,删了就好了 要是感觉还是太亮,就把主平行光的Intens ...

  4. Unity Shader 之 简单实现物体被压扁(top顶点的逐渐与bottom顶点重合)的效果

    Unity Shader 之 简单实现物体被压扁(top顶点的逐渐与bottom顶点重合)的效果 目录 Unity

  5. Unity:计算两个物体(没有父子关系)的相对坐标

    Unity:计算两个物体(没有父子关系)的相对坐标 问题描述 实现方法 实现原理 参考链接 问题描述 计算Unity场景中物体B在物体A坐标系下的坐标,且两物体没有父子关系 实现方法 计算一个物体A的 ...

  6. Unity Shader 之 简单实现物体被黑洞吸收吞噬(或者从黑洞中出来)的效果

    Unity Shader 之 简单实现物体被黑洞吸收吞噬(或者从黑洞中出来)的效果 目录

  7. 阿里价值观大辩论:低 P 碰红线,低 P 没了;高 P 碰红线,红线没了,其背后……...

    loonggg 读完需要 6 分钟 速读仅需 2 分钟 昨天在全网热议了一篇晚点团队的文章<阿里内部价值观大辩论:谁的红线?>,又把阿里的价值观推到了风口浪尖上.这篇文章主要是通过阿里内网 ...

  8. Unity鼠标控制摄像机 围绕物体旋转

    Unity鼠标控制摄像机 围绕物体旋转 角度范围判定 // An highlighted block using UnityEngine;public class CameraCtrl : MonoB ...

  9. Unity Vuforia 之 AR 识别物体抖动的简单解决思路参考

    Unity Vuforia 之 AR 识别物体抖动的简单解决思路参考 目录 ​ 一.简单介绍 二.问题 三.简单解决思路 附录:Vuforia SDK 的功能如下 一.简单介绍 目前世界上主流的AR ...

最新文章

  1. 斯坦佛编程教程-Unix编程工具(四)
  2. [转]linux下fms2流媒体服务器搭建之五-----flv播放器制作篇
  3. 一步步把一个SpringBoot应用打包成Docker镜像并运行
  4. .net 2.0 制作 柱状图
  5. LFS-构建自己的linux
  6. MyIbatis :不使用XML和注解@Mapper以及MapperScan
  7. 【POJ1088】滑雪
  8. hybrid环境下划分vlan一个实验 ————一故障分析
  9. 《量化金融R语言初级教程》一2.6 如果方差不够用
  10. Java和python哪个好,学哪个有用。
  11. WinAPI双人贪吃蛇
  12. Apple越狱后超级实用的Cydia常用源推荐
  13. 【论文阅读】深度学习与多种机器学习方法在不同的药物发现数据集进行对比
  14. poi创建数据透视表_如何创建数据透视表样式
  15. fractional cascading
  16. Notepad++的64位HexEditor免费下载
  17. c++中冒号(:)和双冒号(::)的用法
  18. 电脑蓝屏---错误代码:0xc0000185,修复过程转0xc0000001,最后成功修复
  19. docker 应用系列(一)--- 一步步搭建虚拟机 docker 环境 附有 vue-cli + nginx 应用...
  20. 万能计算机作文,万能机器人作文9篇

热门文章

  1. MySQL处理插入过程中主键或唯一键重复值的解决办法
  2. Android 三大图片加载框架的对比——ImageLoader,Picasso,Glide
  3. windows桌面图标显示为白色解决方案
  4. UVM:7.3.4 UVM中后门访问操作的实现:DPI+VPI
  5. WORKNC 2021.0中文版软件+安装教程
  6. 开课吧T31项目第9天
  7. 通达信的接口是用易语言编程吗?
  8. 【愚公系列】2023年06月 攻防世界-Web(wzsc_文件上传)
  9. 苹果退款_苹果退款理由怎么写_苹果退款教程|流程【图文】-太平洋电脑网PConline-太平洋电脑网...
  10. Delaunay triangulation network怎么理解