HTC VIVE丨8. VRTK瞬移的实现与瞬移区域的设置

瞬移实现的机制

瞬移基于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,这两个限制可同时使用

根据自动寻路系统,绕过障碍物原理,实现瞬移区域的限制,该实现原理与自动寻路机制完全一致

NavMesh知识点回顾

Nav Mesh Limit Distance:该数值为0时,VRTK将不考虑NavMesh对传送的影响,即该限制失效;数值为0.5时,NavMesh未覆盖区域将减小0.5m,当该值足够大或者超大时,将完全覆盖住未覆盖区域,完成传送

3、DestinationPoint

将DestinationPoint拖到场景中去后,即可实现传送

该模型运行后若可进行传送则为蓝色,不可传送为黄色

Destination Marker Settings

Enable Teleport:是否可进行传送

将DestinationPoint设置为瞬移区域

调大、调扁该圆柱体,为其添加BoxCollider,即可实现设置为瞬移区域

猜你喜欢

转载自blog.csdn.net/weixin_38239050/article/details/81322260
今日推荐