admin管理员组

文章数量:1589805

文章目录

  • 🟥 配置 Locomotion System
  • 🟧 实现转身效果
    • 1️⃣ Device-based版
    • 2️⃣ Action-based版
  • 🟨 实现摇杆移动
    • 1️⃣ Device-based版
    • 2️⃣ Action-based版
  • 🟩 实现传送效果
    • 1️⃣ 传送的基础条件
    • 2️⃣ 如何制作一个射线指示器
    • 3️⃣ 实现贝瑟尔曲线传送
  • 🟦 实现人物碰撞效果
    • 1️⃣ 添加相应的组件
    • 2️⃣ 修改 CharacterControllerDriver


🟥 配置 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();
    }
}





大家还有什么问题,欢迎在下方留言!



如果你有 技术的问题 项目开发

都可以加下方联系方式

和我聊一聊你的故事🧡

本文标签: 人物功能教程xRInteraction