一、作用。
监测手柄的各种输入:扳机、触摸板、侧键等等。
二、示例。
1. 手柄挂上 VRTK_ControllerEvents
pointerToggleButton:激光指示器打开/关闭的操作的按钮。
pointerSetButton:用于从指针的光标位置设置目标标记的操作的按钮。
2.例如按下扳机键:注册按下扳机键的事件,按下扳机键注册的方法即可执行,还可以拿到一些具体的参数。
一、作用。
射线。
二、示例。
1.手柄挂上 VRTK_Pointer VRTK_StraightPointerRenderer就可以摁下按键发出射线,并且把对应的手柄拖进来。
可以通过VRTK_DestinationMarker拿到射线指向的点的信息(如下图),包括距离、目标点的Transform、射线、目标点的世界坐标、是否传送等等。
监听事件如下
一、作用。
传送。
二、示例。
在[VRTK_Scripts]下随便创建一个空的gameobject,添加VRTK_BasicTeleport脚本。
参数:
(1)传送时过度颜色。
(2)在基本的传送脚本上可以改变褪色的闪烁速度,以提供定制的传送体验。将速度设置为0将意味着不会出现褪色的闪烁效果。
(3)在0到32之间的范围,决定了眨眼转换的时间长短取决于被传送的距离。一个值为0,将不会延迟瞬移瞬移效应在任何距离上,一个值32将延迟瞬移瞬变,即使距离传送的距离非常接近原来的位置。这可以用来模拟时间花费更长的时间来传递用户的远程端口。一个值16提供了一个适当的基础来模拟这个给用户。
(4)头部位置:以头部为基准,作为传送的位置。未打钩,则是玩家可玩区域的中心位置作为传送的目标点。可玩区域不能和游戏环境交叉,最大化玩家活动空间。
(5)禁止传送物体的标签:如果传送的目标位置的物体标签和此相同,则不能传送。
(6)navemesh 边缘限制:在navemesh 上传送,如果在 navemesh 的边界,则禁止传送,数值是离边界的距离范围。
另外如003中所述,手柄需要添加发射射线的脚本
VRTK_Pointer 、VRTK_StraightPointerRenderer即可实现传送。
一、作用。
抓起物体。
二、示例。
在左手控制器上添加VRTK_InteractTouch、VRTK_InteractGrab
在需要抓取的物体上添加VRTK_InteractableObject即可,用手柄抓起物体之后,会默认给物体添加抓取方式VRTK_FixedJointGrabAttach组件,此外,换手操作需要给物体添加VRTK_SwapControllerGrabAction,高亮添加VRTK_OutlineObjectCopyHighlighter。
一、作用。
VRTK_InteractableObject扩展
二、示例。
这个Demo里用开关门的例子对VRTK_InteractableObject脚本进行了扩展。
碰到门 按一下侧键 就会调用一次StartUsing()。
一、作用。
升降传送。
二、示例。
场景4中的传送是平面传送,同样的在[VRTK_Scripts]下创建的gameobject上添加VRTK_HeightAdjustTeleport组件,其他同案例4
snapToNearestFloor:如果勾选,那么传送的Y位置将会吸附到离地面最近的位置(即不会漂在空中)。如果未勾选,那么传送的Y位置将是目标Y位置的位置(可以在空中)。
customRaycast:某个层的指定射线。
layersToIgnore:忽略图层。
一、作用。
VRTK_InteractableObject扩展,类似场景6
二、示例。
一、作用。
抛物线传送(贝塞尔曲线)。
二、示例。
手柄上需要添加的脚本如下图。
一、作用。
传送。
二、示例。
和场景9类似。
一、 作用。
头部碰到东西黑屏模拟眨眼。
二、 示例。
有一些黑屏的效果,最后是忽略的碰撞标签。
一、 作用。
传送的人的区域显示,并且可以设置碰撞是否可以传送。
二、 示例。
在手柄上添加VRTK_PlayAreaCursor 并且在贝塞尔曲线脚本里引用一下
此外,[VRTK_Scripts] 下PlayAreayao 要添加VRTK_HeadsetCollision脚本,这个脚本依赖于VRTK_HeadsetFade,即可。
一、 作用。
抓取和使用物体的扩展,VRTK_InteractableObject扩展。主要体现Hold Button To Grab/HoldButton To Use勾选和不勾选的区别。
二、 示例。
区别在于是否需要持续按键才可以进行操作。
一、 作用。
抓取的连接方式,以及抓取位置的设置(可以是自由抓取,或者是固定点抓取。)
例如:拿剑永远拿剑柄,拿枪可以拿枪柄也可以拿枪管。
二、 示例。
1.抓取位置
拿剑永远拿剑柄。
如果想要自由抓取的话只需要将Precision Grab勾选。
2.链接方式
比如上图中的剑,抓取连接方式为VRTK_FixedJointGrabAttach,关节链接的方式,抓住物体之后是可以碰掉的,有碰撞的存在。
比如下图的短棒,抓取连接方式为VRTK_ChildOfControllerGrabAttach,抓取后将短棒设置为手柄的子对象,并且将刚体上的 Is Kinematic 勾选,即不受力的作用,不会产生碰撞的感觉。
一、 作用。
扳机键、触摸板、菜单键的交互。
二、 示例。
注册按键事件。
获得参数。