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

news/2024/7/8 1:26:21

【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开起来。


http://lihuaxi.xjx100.cn/news/281188.html

相关文章

600页!分享珍藏很久的《推荐系统学习手册》(附链接)

这是之前学习推荐系统时的学习资料&#xff0c;非常全面&#xff0c;包含经典模型的解析及代码实现、模型的评估、最新工业界论文解读等等&#xff0c;全网仅此一份&#xff01;该手册有PDF版本和Markdown版本&#xff0c;总计有600多页&#xff01;资料领取方式&#xff1a;1.…

轻松应对Java试题,这是一份大数据分析工程师面试指南

作者 | HappyMint转载自大数据与人工智能&#xff08;ai-big-data&#xff09;导语&#xff1a;经过这一段时间与读者的互动与沟通&#xff0c;本文作者发现很多小伙伴会咨询面试相关的问题&#xff0c;特别是即将毕业的小伙伴&#xff0c;所以决定输出一系列面试相关的文章。本…

flash写保护原理_STM32系统中的2种数据掉电保护方法!

在嵌入式设备开发中&#xff0c;往往需要保存一些掉电不易失性的数据&#xff0c;如果系统配置、用户定制信息等等&#xff0c;如果增加额外的ROM IC&#xff0c;比如&#xff08;基于I2C的24C02等等&#xff09;往往会造成额外的PCB空间增大&#xff0c;硬件成本增加&#xff…

Java重写父类使用@Override时出现The method destroy() of type xxx must override a superclass method的问题解决...

解决方法&#xff1a; 1、把JDK版本改成1.6以上的。 2、把Compiler改成1.6以上的。 关于这两者的区别&#xff0c;参考&#xff1a;http://www.cnblogs.com/EasonJim/p/6741682.html

《深入理解Spring Cloud与微服务构建》出版啦!

作者简介方志朋&#xff0c;毕业于武汉理工大学&#xff0c;CSDN博客专家&#xff0c;专注于微服务、大数据等领域&#xff0c;乐于分享&#xff0c;爱好开源&#xff0c;活跃于各大开源社区。著有《史上最简单的Spring Cloud教程》&#xff0c;累计访问量超过了300万。本书源码…

Perl split字符串分割函数用法指南

本文向大家简单介绍一下Perl split函数的用法&#xff0c;Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中。 本文和大家重点讨论一下Perl split函数的用法&#xff0c;Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并…

特斯拉的计算机视觉

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达1.任务根据埃隆马斯克&#xff08;Elon Musk&#xff09;的说法&#xff0c;截至2020年7月初&#xff0c;特斯拉接近于自动驾驶汽车&#xff0c;也称为5级自动驾驶。无论是…

语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4

计算机语言RGui平台上的R语言__数据类型_向量_4R语言进阶4_数据类型_向量1咱们而可以从自然语言(汉语、英、法、俄、德、日、拉丁、伊斯兰、等等)的基本特征来看——词汇、句子、段落、结构、文章(应用文、小说、戏剧、散文、诗歌、……模式)。计算机语言是面向机器—电子线路的…