瞬移实现的机制
瞬移基于Collider碰撞体组件,因此地面需要加xxCollider或Mesh Collider
1、导入地形资源包
2、导入Steam VR SDK和VRTK
3、按上一节内容设置好VRTK
4、为需要瞬移的物体添加Collider
瞬移方法一
1、VRTK_Straight Pointer Renderer
LeftController/RightController为VRTK_Straight Pointer Renderer
新建gameObject放到[VRTK]下,重命名为PlayArea,添加VRTK_Basic Teleport组件,实现瞬移效果
Blink Transition Speed:传送时闪屏的效果时间
Distance Blink Delay:闪屏的延时时间
Target List Policy:相应瞬移的策略设置
Nav Mesh Limit Distance:使用NavMesh控制瞬移区域的数值
自适应高度的瞬移
此时可完成瞬移效果。但如有高度差的箱子,选中箱子顶,却不能瞬移到箱子顶去,而像是穿过了箱子
解决方法:
该问题是自适应高度的瞬移。
为PlayArea添加VRTK_Height Adjust Teleport组件,删除原有的VRTK_Basic Teleport组件
Height Adjust Options
Layers To Ignore:选项中有当前的所有层,当我们选中某层时,系统不再实现该层的瞬移
2、VRTK_Bezier Pointer Renderer
移除原VRTK_Straight Pointer Renderer,改为VRTK_Bezier Pointer Renderer,保持原VRTK_Pointer不变即可
指针末端穿过地形,不在地形表面
解决办法:
勾选VRTK_Bezier Pointer Renderer组件中的Cursor Match Target Rotation选项
Cursor Match Target Rotation:使指针的末端/光标跟目标的旋转角度保持一致
瞬移方法二
实现效果:选中一个点,当松开TouchPad时,人物快速移动到选定的点
与方法一区别:
方法一快速闪现位置到目标点,方法二为快速移动位置到目标点,且该组件实现了自适应高度效果
将PlayArea的VRTK_Height Adjust Teleport脚本更改为VRTK_Dash Teleport,实现该效果
设定限制瞬移区域的三种方法
1、Policy List
Target List Policy:设定瞬移区域排除规则
挂载VRTK_Policy List组件,并赋值给该选项框
Operation:Ignore / Inculde
Check Types:Tag / Nothing / Everying / Script / Layer
Szize:Tag等的个数
2、Nav Mesh Limit Distance
删掉Target List Policy,这两个限制可同时使用
根据自动寻路系统,绕过障碍物原理,实现瞬移区域的限制,该实现原理与自动寻路机制完全一致
Nav Mesh Limit Distance:该数值为0时,VRTK将不考虑NavMesh对传送的影响,即该限制失效;数值为0.5时,NavMesh未覆盖区域将减小0.5m,当该值足够大或者超大时,将完全覆盖住未覆盖区域,完成传送
3、DestinationPoint
将DestinationPoint拖到场景中去后,即可实现传送
该模型运行后若可进行传送则为蓝色,不可传送为黄色
Destination Marker Settings
Enable Teleport:是否可进行传送
将DestinationPoint设置为瞬移区域
调大、调扁该圆柱体,为其添加BoxCollider,即可实现设置为瞬移区域