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

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(也就是扳机键)是否被按下和扳机键的值
在这里插入图片描述

相关文章:

  • 百度网盟推广合作网站企业网站注册
  • 网站制作手机端什么推广平台好
  • brackets做的网站茂名百度seo公司
  • 厦门建设厅查询网站今天重大新闻事件
  • 网站系统繁忙seo对网店推广的作用
  • 合肥行业网站建设上海网络推广外包公司
  • Python深度学习环境配置(Pytorch、CUDA、cuDNN),包括Anaconda搭配Pycharm的环境搭建以及基础使用教程(保姆级教程,适合小白、深度学习零基础入门)
  • 经验总结:使用vue3测试后端接口的模板
  • 【京准时钟】网络时间同步服务器对数据库的重要性
  • 【JAVA】阿里云百炼平台对接DeepSeek-V3大模型使用详解
  • DOM Node
  • 鸿蒙NEXT开发-Navigation组件导航
  • Python - Python操作Redis
  • JavaWeb后端基础(1)
  • 【Linux】Linux的基本指令(2)
  • 数据库数据恢复—SQL Server附加数据库报错“错误 823”怎么办?
  • PHP面试题--后端部分
  • 浅谈人工智能之Windows安装llama factory
  • vue使用a-table设置自定义合并字段实现某字段值相同则合并行
  • pyQT5简易教程(一):制作一个可以选择本地图片并显示的桌面应用
  • 455. 分发饼干(LeetCode)
  • Oracle 数据变化量查询
  • mac下载MAMP6.8.1;解决mac使用小皮面板安装php7.4
  • 动态表头导出EasyExcel
  • 基于C语言对CAPL语法基础的理解
  • 天梯赛:L2-001 紧急救援