VRTK4.0学习(六):给控制器添加激光射线

前言

OpenVR Controller -基于虚拟现实的控制器,可通过SteamVR与OpenVR标准配合使用,例如HTC Vive或Oculus Touch控制器。
Trackpad -OpenVR控制器的触摸板/缩略图。
Facade -外观为更复杂的基础系统提供了用户友好的界面

一、添加直指针

直指针预制件从起点到最大指定长度投射一条直线,或者直到指针光束与有效目标碰撞为止。
当直指针与有效的GameObject碰撞时,会发生“选择动作”,该选择动作发出一个事件,该事件包含有关Straight Pointer当前正在与之碰撞的GameObject的数据。
直指针可用于精确挑选位置,尤其是在连接到控制器时。我们将在控制器上设置一个直指针,当触摸和不触摸OpenVR控制器上的触控板时,可以激活和停用它。

第1步

在Unity Project窗口中展开VRTK Prefabs Package目录,直到该Packages -> VRTK Prefabs -> Pointers目录可见,然后将ObjectPointer.Straight预制件拖放到Hierarchy窗口中。
在这里插入图片描述

第2步

在Unity层次结构中选择ObjectPointer.Straight预制体,然后更改Pointer Facade组件以配置Pointer的基本功能。
该Follow Source参数确定指针应在场景中跟踪TrackedAlias哪个GameObject,例如,如果我们希望Pointer跟随Right Controller GameObject,则将GameObject拖放到Pointer Facade组件的Follow Source参数中。
在这里插入图片描述

第3步

直指针默认情况下将处于禁用状态,因此我们需要一种激活和禁用指针光束的方法。这是通过挂钩Boolean Action来实现的,当变为时true将激活指针,而变为时false将取消激活指针。可以使用任何 Boolean Action 来执行此激活/停用操作。但是在这种情况下,我们将使用OpenVR控制器的触控板的触摸状态,因此当触摸触控板时,指针将激活,而不再使用触控板时触摸,指针将停用。
在场景中应该已经有一个Unity Button Action处理了OpenVR控制器的触控板的触摸状态,因此请在Unity层次结构中,扩展UnityXR.OpenVR.RightController -> Trackpad 物体以暴露Touch[17] 物体。此Touch[17]物体包含,Unity Button Action用于侦听Right OpenVR Controller上触控板的触摸状态。
将UnityXR.OpenVR.RightController -> Trackpad -> Touch[17]物体拖放到Pointer Facade组件的Activation Action参数中。
在这里插入图片描述

结语

现在,我们将不再使用任何其他Pointer Facade参数,因为我们具有在触控板触摸激活直指针所需的全部功能,并且它将沿控制器直线指向任何方向。
播放Unity场景并触摸右手控制器上的触控板,直指针将从控制器发出光束,指向控制器的向前方向。请注意,笔直光束在被激活时如何具有两种状态:
有效碰撞-笔直与有效的GameObject碰撞并显示为绿线。
无效/无碰撞-笔直指针未与任何有效的GameObject碰撞,并显示为红线。
在这里插入图片描述

二、添加弯曲指针(贝塞尔曲线或抛物线形指针)

弯曲指针(也称为贝塞尔曲线或抛物线形指针)从原点开始向前弯曲一定距离,然后向下投射一条直线,直到它与对撞机碰撞为止。用贝塞尔曲线表示该向前然后向下的投影,该曲线基本上画出了光束原点和最终目标点之间的曲线。
当弯曲指针与有效的GameObject碰撞时,会发生选择动作,该选择动作会发出一个事件,其中包含有关弯曲指针当前与之碰撞的GameObject的数据。
当创建传送运动功能时,弯曲指针是一个受欢迎的选择,因为弯曲的光束始终会落在地板上,从而更容易选择目标位置。
添加方式与添加直指针的操作类似,只是第1步骤拖放ObjectPointer.Straight预制件改为ObjectPointer.Curved预制件。其他步骤在此就不在复述。

注:本文内容引用自VRTK学院。用于自己学习笔记,文章如有描述不当的地方,也欢迎各位朋友在评论处留言指正,感谢大家支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值