当前位置: 首页 > article >正文

unity pico开发 三 移动 旋转 传送

文章目录

    • LocomtionSystem
    • 平滑移动
    • 转身
    • 碰撞体随相机改变身高
    • 传送
      • 添加射线
      • 两种传送区域
        • TeleportationArea
        • TeleportationArea
      • 美化传送射线

LocomtionSystem

在XR Origin上添加LocomtionSystem脚本,并拖拽XR Origin属性
这是移动的基础

平滑移动

在XR Origin上添加Continuous Move Provider脚本,注意是Action-Base版的脚本,并进行如下设置
在这里插入图片描述
Gravity application Model:重力的模式, 只推荐用immediately模式,另一个模式有很多问题
LeftHandMoveAction:左手用哪个动作触发移动,勾选use reference,然后选择
在这里插入图片描述
为xr origin物体添加一个characterController,将Center调整为1(让碰撞盒高一点别调到地下),创建一个地面
在这里插入图片描述

转身

转身分为平滑转身和snap闪现
两者是一样的,这里以snap为例
XR Origin物体挂载snapTurnProvider(Action-base),然后如下设置
在这里插入图片描述

EnableTurnAround:如果勾选,将摇杆前后推可以直接转180度
RightHandSnapTurnAciton:右手使用哪个动作触发转身
在这里插入图片描述

碰撞体随相机改变身高

我们蹲下时希望碰撞体可以变小
为XR Origin添加如下脚本,并指定LocomotionProvider为移动用的Provider,例如Continuous Move Provider,注意不是XR Origin脚本
同时确保移动用的Provider的Gravity application Model为immediately模式
在这里插入图片描述

传送

添加射线

默认左右手会有三个交互射线的组件,我们把以下这些删掉,从头开始
在这里插入图片描述
为XROrigin创建射线子物体,同时将自动创建一个XR Interaction Manager物体用来处理交互
在这里插入图片描述
选中射线,以右手为例
找到射线的XRController组件,选择预制数据,选择右手数据
在这里插入图片描述
默认使用抓取键进行传送,如果需要改成trigger键,可以修改射线的XRController里的SelectAction为active事件
在这里插入图片描述
在这里插入图片描述

两种传送区域

TeleportationArea

整个区域都可以传送
为地面挂载TeleportationArea脚本,并拖入碰撞盒
在这里插入图片描述
此时即可使用射线进行传送

TeleportationArea

传送点,同样需要设置碰撞盒,此外还需要设置TeleportAnchorTransform,这是传送后的落点
在这里插入图片描述

SelectMode: single如果处于当前位置不能再次传送,multiple即使处于当前位置也可以再次传送
MatchOrientation:传送后的朝向,默认是保持原朝向,图中的设置可以让玩家对齐传送后位置的z轴

美化传送射线

直线改为曲线
选中射线,找到XRRayInteractor组件,如下修改
在这里插入图片描述
添加一个端点指示
创建一个圆柱,去掉碰撞体,压扁,放到射线子物体,然后为射线的 XR InteractorLineVisual指定
在这里插入图片描述
不用时隐藏射线
编写以下脚本

public class ActivateTeleportationRay : MonoBehaviour
{
    public GameObject teletportation;

    public InputActionProperty activate;
    private void Update()
    {
        teletportation.SetActive(activate.action.ReadValue<float>()>0.01f);
    }
}

挂在到一个非射线物体上,将teletportation指定为射线,activate指定为触发传送的案件的动作,推荐使用value版本的动作,可以获取到精确值,非value版本的动作只能获取0和1
如下图分别表示active(也就是扳机键)是否被按下和扳机键的值
在这里插入图片描述


http://www.kler.cn/a/565830.html

相关文章:

  • 二十三种设计模式
  • 「架构选型」5 种 API 网关技术选型
  • 【PCIe 总线及设备入门学习专栏 1.2 -- 访问 PCIe 设备过程】
  • Docker基础-本地目录挂载
  • Holtek HT66F0184深度解析:集成LCD驱动的高效MCU解决方案
  • 【Qt】MVC设计模式
  • 【Go】十六、protobuf构建基础服务信息、grpc服务启动的基础信息
  • Flutter系列教程之(4)——自定义Widget控件及相关知识
  • LeetCode 2656 K个元素的最大和
  • 力扣——不同路径
  • 算法日记31:leetcode341整数拆分(DFS->记忆化->DP)
  • deepseek 和chatgpt的论文降重方法有哪些?
  • 大模型最新面试题系列:训练篇之分布式训练
  • go设计模式
  • 【压力测试】
  • 自然语言处理NLP入门 -- 第五节词向量与嵌入
  • Ollama download DeepSeek Local Install
  • 如意玲珑应用构建指南(一):规范体系与配置文件全解析
  • 二、IDE集成DeepSeek保姆级教学(使用篇)
  • 2-1文件描述符