前言:继专栏上一篇文章搭建开发环境后,本文就射线传送(包括区域传送、锚点传送)进行介绍,操纵摇杆在场景中移动、抓取物品、旋转镜头视角等基础功能将在下一篇文章中介绍。
搭建开发环境传送门:
Unity Pico开发之环境搭建https://blog.csdn.net/m0_74799789/article/details/142827336?spm=1001.2014.3001.5501
目录
一、射线传送(区域传送)
功能介绍:在指定区域内传送至射线所指方位(使用Grip键)。
1.1 新建两个Plane作为地面,为Plane添加材质,标识为可传送区域。
1.2 为XR Origin添加Teleportation Provider、Locomotion System脚本,并将XR Origin分别拖拽到Teleportation Provider脚本下的System处、Locomotion System脚本下的XR Origin处。
1.3 为Plane添加Teleportation Area脚本(可传送区域),并将XR Origin拖拽到Teleportation Area脚本下的Teleportation Provider处。
运行后发现,玩家只能在指定区域内随意传送,超出区域将无法传送,当射线指向未挂载Teleportation Area脚本的区域时射线颜色也为默认红色,表示不可交互。
射线传送实现原理:当挂载Teleportation Area脚本的地面被点击后,通过Teleportation Provider找到其下的Locomotion System对象,Locomotion System会找到对应的XR Origin对象,也就是玩家自己,Locomotion System主要用于实现玩家到目标传送点的移动,Teleportation Provider负责将Locomotion System和目标传送点进行绑定。
二、射线传送(锚点传送)
功能介绍:区别于区域传送的大规模传送,锚点传送只能进行指定点位传送。
锚点传送脚本可以挂载在需要传送的锚点上,而挂载传送脚本的(无论是Teleportation Anchor还是Teleportation Area)游戏对象都需要有碰撞体,否则将无法传送,相机上需要挂载Teleportation Provider以及Locomotion System脚本,用于传送。
2.1 将XR Origin移动至Plane (1)上,并为地面添加Teleportation Anchor脚本,此时可传送锚点默认在地面中央,且锚点位置无法修改。展开Teleportation Anchor脚本下的Teleportation Configuration(传送配置),并将XR Origin拖拽至Teleportation Provider处。
运行后发现,无论射线指向Plane (1)何处,最终只能传送至锚点处,即Plane (1)中央。
修改锚点位置
2.2 在上一步骤的基础下,在Plane (1)下新建一个空物体并命名为Anchor,将Anchor拖拽至Teleportation Anchor脚本下的Teleport Anchor Transform。空物体可以随意修改位置。
运行后发现,即便锚点位置能够修改,但同样仅能传送至空物体即锚点的所在位置。
进阶:多个传送点
说明:要实现同一块地面上多个传送点,则无法再给地面直接挂载Teleportation Anchor脚本。创建Canvas的作用是利用Image组件标记每个传送点的位置,标记物也可以是实体对象。
2.3.1 Hierarchy面板右击—XR—UI Canvas,新建XR类型画布。修改Canvas的位置及缩放值,使其完全覆盖Plane (1)。
2.3.2 右击Canvas—UI—Image,新建Image并将其命名为Anchor1。将准备好的标识图拖拽到Image组件下的的Source Image。
2.3.3 为Anchor1添加Box Collider组件及Teleportation Anchor脚本,将XR Origin拖拽至Teleportation Provider处。
2.3.4 重复上述步骤制作其他传送点,也可以直接复制(Ctrl+D)Anchor1并将副本移动至地面的其他位置。
运行后发现,只有当射线指向标识点时,点击其中任意一个才能进行传送。(此处移除了Plane (1)上的Teleportation Anchor脚本,否则当点击地面时会传送至地面相对应的锚点上)
标签:脚本,传送,Teleportation,Unity,Pico,锚点,开发,XR,Anchor From: https://blog.csdn.net/m0_74799789/article/details/142928678