首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >XR Interaction Toolkit教程⭐二、实现移动、传送和人物的碰撞功能

XR Interaction Toolkit教程⭐二、实现移动、传送和人物的碰撞功能

作者头像
星河造梦坊官方
发布2024-08-15 20:37:57
发布2024-08-15 20:37:57
1.1K0
举报

🟥 配置 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。

代码语言:javascript
复制
using UnityEngine.XR.Interaction.Toolkit;

public class MyCharacterControllerDriver : CharacterControllerDriver
{
    void Update()
    {
        UpdateCharacterController();
    }
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🟥 配置 Locomotion System
  • 🟧 实现转身效果
    • 1️⃣ Device-based版
    • 2️⃣ Action-based版
  • 🟨 实现摇杆移动
    • 1️⃣ Device-based版
    • 2️⃣ Action-based版
  • 🟩 实现传送效果
    • 1️⃣ 传送的基础条件
    • 2️⃣ 如何制作一个射线指示器
    • 3️⃣ 实现贝瑟尔曲线传送
  • 🟦 实现人物碰撞效果
    • 1️⃣ 添加相应的组件
    • 2️⃣ 修改 CharacterControllerDriver
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档