VRTK射线检测

VRTK射线检测回调事件

本人在工作中做VR隐患排查项目开发的时候,有个功能需要做到:按下手柄触摸板发送射线,松开触摸板的时候处理射线最后检测到的那个游戏物体。

功能构思:1、按下触摸板,从手柄上发射射线;

       2、当射线停留在某个游戏物体上时,将此游戏物体添加到List列表中;

       3、当射线移开此物体,停留在下一个游戏物体时,移除List列表中刚刚检测到的游戏物体(由于射线是一直检测的,所以当你不停的移动射线时,会不停的添加和移除射线检测到的游戏物体);

       4、当射线停留在你想处理的某游戏物体上时(此时游戏物体添加到List列表中),松开触摸板,此时可以对此游戏物体进行一系列逻辑处理;

       5、逻辑处理完成后,会执行移除List列表中的游戏物体,以便于下次使用射线检测。    

获取射线碰撞到的某个物体这一类功能。可以通过VRTK里面的事件回调获取。

想使用VRTK射线检测,首先需要打开unity,导入SteamVR SDK和VRTK插件,在此不做演示。

在VRTK的脚本中,有VRTK_ControllerPointerEvents_ListenerExample和VRTK_DestinationMarker两个脚本。

下面贴上本人代码以供参考:

 

public class Test()
{private VRTK_Pointer rightHandPointer;//右手柄Pointer组件private List<GameObject> lists = new List<GameObject>();//创建列表void Start(){rightHandPointer=VRTK_DeviceFinder.GetControllerRightHand().GetComponent<VRTK_Pointer>();//获取右手柄的VRTK_Pointer组件//rightHandPointer.GetComponent<VRTK_DestinationMarker>().DestinationMarkerEnter+= Test_DestinationMarkerEnter;//当射线进入的时候
    rightHandPointer.GetComponent<VRTK_DestinationMarker>().DestinationMarkerExit += Test_DestinationMarkerExit;//当射线离开的时候
    rightHandPointer.GetComponent<VRTK_DestinationMarker>().DestinationMarkerHover += Test_DestinationMarkerHover;//当射线停留的时候//rightHandPointer.GetComponent<VRTK_DestinationMarker>().DestinationMarkerSet+= Test_DestinationMarkerSet;//当目标标记在场景中活动时发出,以确定最后的目的地位置(用于选择和传送)
  }//处理 射线停留在游戏物体上private void Test_DestinationMarkerHover(object sender, DestinationMarkerEventArgs e){if (e.target != null)//当射线检测到游戏物体时,添加到列表中
      lists.Add(e.target.gameObject);Debug.Log("获取射线检测到的游戏物体的名字:"+e.target.name);}//处理 射线移开游戏物体时private void Test_DestinationMarkerExit(object sender, DestinationMarkerEventArgs e){//这段话意思是:当SelectionButton不再按下的时候,表示选中此游戏物体if (!rightHandPointer.IsSelectionButtonPressed()){//处理选中的游戏物体Debug.Log("获取射线检测到的游戏物体的名字:"+e.target.name);}//当射线离开游戏物体时,移出列表
    lists.Remove(e.target.gameObject);}
}

 

转载于:https://www.cnblogs.com/yzx885059439/p/10869150.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SELECT命令中的GROUPBY和HAVING子句

在介绍GROUP BY 和 HAVING 子句前&#xff0c;我们必需先讲讲sql语言中一种特殊的函数&#xff1a;聚合函数&#xff0c;例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。 SELECT SUM(population) FROM bbc 这里的SUM作用在所有返回记…

发布任务PHP源码,Thinkphp5新威客任务平台源码

最新更新日志 修复注册时提示验证码错误的BUG修复Thinkphp框架漏洞兼容linux去除冗余代码和无用文件功能模块 1.手机任务面&#xff0c;一个手机版的任务需要&#xff0c;支持雇主入住发布任务&#xff0c;用户是雇主也是做任务可以自己发任务&#xff0c;做任务。2.雇主发布任…

[html] 什么是本地存储的有效期?

[html] 什么是本地存储的有效期&#xff1f; 本地存储的四种方式&#xff1a;cookie&#xff0c;localStorage, sessionStorage, indexDB cookie: 通过 expires / max-age 设置过期时间。如不指定&#xff0c;则为 session cookie, 即一次会话有效。 localStorage: 持久存储&a…

神经网络模型模型转ONNX

近期由于业务需要&#xff0c;需要将训练好的模型转为ONNX格式&#xff0c;为此颇费了一番功夫&#xff0c;在此总结一下吧。。 1、ONNX是一种神经网络模型保存的中间格式&#xff0c;支持多种格式的模型转为ONNX&#xff0c;也支持使用ONNX导入多种格式的模型&#xff0c;具体…

10个值得关注的优秀CSS框架

大多数做过网页设计的都知道“CSS框架”&#xff0c;而且肯定有很多设计师已经开始在作品中使用CSS框架。 就像其他编程语言一样&#xff0c;CSS也可以把一些重复使用的代码整合起来&#xff0c;这样可以减轻很多的工作量。 恰当地利用CSS框架可以缩短开发时间&#xff0c;不过…

linux服务器 版本 比例,Linux比例近半 服务器操作系统混战开始

一项为期半年的虚拟化调查表明&#xff0c;企业普遍存在多种服务器操作系统混用的情况&#xff1b;受IT投资环境的影响&#xff0c;IT经理们现在更加重视服务器资源利用率。据了解&#xff0c;根据不同应用的特点&#xff0c;大多数企业都在数据中心中同时使用了多种操作系统&a…

[html] 如何在页面打开PDF文件?

[html] 如何在页面打开PDF文件&#xff1f; 移动端如果是安卓的不太能实现直接打开PDF文件&#xff0c;需要使用pdfjs将pdf转换成canvas&#xff0c;再在页面上展示个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎…

ora01031权限不足linux,ORA-01031:权限不足

问题描述&#xff1a;ORA-01031:权限不足我用scott用户创建了一个存储过程,创建成功后我调用改存储过程,就提示我权限不足,是怎么回事锕 ,有谁帮解决一下下锕我的存储过程如下:create or replace procedure xu_create isv_a varchar2(20):&输入表名称;v_b varchar2(20):&am…

解决firebug报“illegal character错误的问题

项目中的一个js文件在firefox中总报“illegal character"错误&#xff0c;而且firebug中显示js文件的首字符有乱码。 用notepad2打开js文件查看编码&#xff0c;当前是UTF-8&#xff08;含bom&#xff09;&#xff0c;更改为UTF-8 后运行正常。转载于:https://www.cnblogs…

[html] 如何阻止屏幕旋转时自动调整字体的大小?

[html] 如何阻止屏幕旋转时自动调整字体的大小&#xff1f; html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 { -webkit-text-size-adjust:100%; }个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家…

arp保持时间 linux,Linux实现ARP缓存老化时间原理问题深入解析

一.问题众所周知&#xff0c;ARP是一个链路层的地址解析协议&#xff0c;它以IP地址为键值&#xff0c;查询保有该IP地址主机的MAC地址。协议的详情就不详述了&#xff0c;你可以看RFC&#xff0c;也可以看教科书。这里写这么一篇文章&#xff0c;主要是为了做一点记录&#xf…

[html] html5中的meta标签http-equiv属性有什么作用?

[html] html5中的meta标签http-equiv属性有什么作用&#xff1f; http-equiv是http5新增的属性&#xff0c;用于把 content 属性关联到 HTTP 头部&#xff0c;可模拟响应头。例如&#xff1a;content-type: 声明网页字符编码<meta http-equiv"content-Type" cont…

[html] 在HTML5中,用于获得用户的当前位置是哪个方法?

[html] 在HTML5中&#xff0c;用于获得用户的当前位置是哪个方法&#xff1f; getCurrentPosition&#xff08;&#xff09;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前…

checkboxlist与数组结合用的技

今天看到一个checkboxlist与数组结合用的技巧。用户自定义控件.ascx页面有一个SqlDataSource数据源&#xff0c;还有一个Checkboxlist控件。下面来看看.cs里的关键代码了&#xff1a;public string SelectedValue { get { string s "";…

转Akka是什么?

可扩展的实时事务处理 我们相信编写出正确的、具有容错性和可扩展性的并发程序太困难了。这多数是因为使用了错误的工具和错误的抽象级别。Akka就是为了改变这种状况而生的。通过使用Actor模型我们提升了抽象级别&#xff0c;为构建可扩展的、有弹性的响应式并发应用提供了一个…

[html] 说说你对HTML5中“一次编写,全体使用”的理解

[html] 说说你对HTML5中“一次编写&#xff0c;全体使用”的理解 这个有点组件化的意思&#xff1f;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

linux 添加path环境变量中,在Linux里设置环境变量PATH的方法是什?

我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下&#xff0c;build_tools就是我的编译工具&#xff0c;则有如下三种方法来设置环境变量&#xff1a;1、直接用export命令&#xff1a;#export PATH$PATH:/opt/au1200_rm/build_tools/bin查看是否已经设好&a…

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十一)地图遮罩层的实现

前面的章节主要针对地图表现层进行讲解。通常来说&#xff0c;简单的游戏光有它就足够了&#xff1b;但是为了达到更加真实的光影效果&#xff0c;模拟真实的虚拟世界&#xff0c;我们还得继续在地图上下大工夫。本节将就如何实现地图中的遮罩层&#xff0c;即物体对角色的遮挡…

gitlab自带的Nginx与原Nginx冲突的解决方案

gitlab 推荐方案2 默认情况下&#xff0c;gitlab使用自带的Nginx&#xff0c;占用80端口&#xff0c;这样就与系统原本安装的Nginx冲突。导致其中一个nginx无法启动 我的gitlab可以正常启动&#xff0c;当再部署一个接口文档的项目时&#xff0c;发现原nginx无法启动&#xff0…

[html] 本地存储和cookie之间的区别是什么?

[html] 本地存储和cookie之间的区别是什么&#xff1f; 1.储存数据的大小不一样 2.cookie会被每次携带在请求中&#xff0c;而storage不会&#xff0c;只会存储在客户端。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷…