🟥 配置 Locomotion System
在层级面板右键,选择XR-Locomotion System,将物体添加到场景。
该物体上配置了多个脚本,是负责移动的物体。
- LocomotionSystem:负责管理所有的移动效果
- TeleportationProvider:负责传送
- ActionBasedSnapTurnProvider:负责转身
🟧 实现转身效果
1️⃣ Device-based版
如下图所示,添加 ContinuousMoveProvider(Device-based) 完成配置。
建议:右手摇杆转身,左手摇杆位移。
想实现右手转身,那么便添加右手即可。
2️⃣ Action-based版
如下图所示,添加 ContinuousMoveProvider(Action-based) 完成配置。
建议:右手摇杆转身,左手摇杆位移。
想实现右手转身,那么便只勾选右手的UseReference即可。
🟨 实现摇杆移动
1️⃣ Device-based版
给 Locomotion System 添加 ContinuousMoveProvider (Device-based) 组件。
若你只想左手移动,那么便只添加左手即可。
2️⃣ Action-based版
给 Locomotion System 添加 ContinuousMoveProvider (Action-based) 组件。
若你只想左手移动,那么便只勾选左手的 UseReference 即可。
🟩 实现传送效果
1️⃣ 传送的基础条件
给地面添加 TeleportationArea 组件,这样才能在地面上使用传送。
现在按 侧键 是传送操作。
2️⃣ 如何制作一个射线指示器
完成第1步,我们已经能实现传送了。
现在我们想给射线添加一个指示器该怎样做呢?
找一个指示器素材,删除 Collider,将其添加到我们传送的手柄上即可。
3️⃣ 实现贝瑟尔曲线传送
🟦 实现人物碰撞效果
1️⃣ 添加相应的组件
- 给 XR Origin 添加 CharacterController组件,并设置中心点和半径。
- 添加 CharacterControllerDriver 组件:它可根据头显的位置,动态的去调整CharacterController的高度和中心点。
2️⃣ 修改 CharacterControllerDriver
该组件的作用是:它可根据头显的位置,动态的去调整CharacterController的高度和中心点。
但测试发现,它只在手柄移动和传送时有效果。单单我们戴着头显(XR Origin)移动并不行。
我们需要新建一个脚本,继承CharacterControllerDriver ,替换掉原有的CharacterControllerDriver。
using UnityEngine.XR.Interaction.Toolkit; public class MyCharacterControllerDriver : CharacterControllerDriver { void Update() { UpdateCharacterController(); } }