VRTK - 3.传送
<p>
VRTK传送小笔记,使用手柄在场景中进行传送移动,包括传送的基本设置,传送的几种方式,限制传送。
</p>
一、基本的传送
在场景中进行基本的移动操作,使用到了VRTK_Pointer(用来发出射线),VRTK_StraightPointerRenderer(渲染射线),VRTK_BasicTeleport这几个脚本组件。
在手柄上添加VRTK_Pointer和VRTK_StraightPointerRenderer,同时将VRTK_StraightPointerRenderer赋值给VRTK_Pointer用来渲染射线,同时需要勾选Enable Teleport:
渲染射线的方式有两种,一种是直线,就是例子中添加的,一种是比塞尔曲线,需要使用到另外一个渲染射线脚本VRTK_BezierPointerRenderer,需要使用到哪种渲染射线方式,把对应的脚本赋值给VRTK_Pointer中的PointRenderer就行了。
BezierPointer.png射线添加完毕后,然后添加传送的方式,首先在VRTK下建立一个PlayArea空对象,用来做VRTK的游玩区域,并添加上VRTK_BasicTeleport脚本:
BasicTeleport.png完成到这里,就可以进行基本的传送啦。
二、传送的方式
完成后就可以在场景中进行传送啦,传送的方式有三种:
VRTK_BasicTeleport(基本传送),这种传送方式只会更新X/Z的坐标位置不能够进行上下移动。
VRTK_HeightAdjustTeleport(高度调整传送),基本传送的扩展,通过确定PlayArea是否在另外一个游戏对象上来改变Y的坐标。
VRTK_DashTeleport(冲撞传送),和VRTK_HeightAdjustTeleport类似,都可以进行高度的调整,却别是VRTK_HeightAdjustTeleport是瞬移到目的地,VRTK_DashTeleport是快速移动到目的地(有一个渐变的过程);
三、限制传送
在VR场景内,使用传送来移动,当然有些地方是不能够移动的,VRTK也提供了进行几种限制传送的方式,如下:
限制传送区域:
通过VRTK_PolicyList来限制传送区域,限制的方式有以下几种:
Operation.png Check Type.png以tag为例,如果PolicyList的操作方式是Ignore的话,场景中物体的tag匹配上PolicyList中的tag “Test”时,则不能够传送到该物体上。
示例.png
限制手柄传送
当手柄碰撞到物体时,禁止传送:
VRTK_TeleportDisableOnControllerObscured,在PlayArea上加上这个脚本,添加时会自动添加VRTK_HeadsetControllerAware脚本,这个是用来跟踪手柄是否碰撞到物体
VRTK_TeleportDisableOnControllerObscured.png
限制身体传送
当身体陷入场景内物体时,不能够进行传送:
在PlayArea上添加VRTK_TeleportDisableOnHeadsetCollision和VRTK_HeadsetCollision,进行限制:
VRTK_TeleportDisableOnHeadsetCollision.png