Unity Pico开发之基础功能(1)

前言:继专栏上一篇文章搭建开发环境后,本文就射线传送(包括区域传送、锚点传送)进行介绍,操纵摇杆在场景中移动抓取物品旋转镜头视角等基础功能将在下一篇文章中介绍。

搭建开发环境传送门:

Unity Pico开发之环境搭建icon-default.png?t=O83Ahttps://blog.csdn.net/m0_74799789/article/details/142827336?spm=1001.2014.3001.5501

目录

一、射线传送(区域传送)

二、射线传送(锚点传送)

修改锚点位置

进阶:多个传送点


一、射线传送(区域传送)

功能介绍:在指定区域内传送至射线所指方位(使用Grip键)。

1.1 新建两个Plane作为地面,为Plane添加材质,标识为可传送区域。

eb84f1d8c5b440ab9eda54c9e6d7ae73.png

1.2 为XR Origin添加Teleportation ProviderLocomotion System脚本,并将XR Origin分别拖拽到Teleportation Provider脚本下的System处、Locomotion System脚本下的XR Origin处。

e9326a815de4497ebf9f5973fa1eaddd.png

1.3 为Plane添加Teleportation Area脚本(可传送区域),并将XR Origin拖拽到Teleportation Area脚本下的Teleportation Provider处。

f8903c6b4f604af7969445895a37e825.png

运行后发现,玩家只能在指定区域内随意传送,超出区域将无法传送,当射线指向未挂载Teleportation Area脚本的区域时射线颜色也为默认红色,表示不可交互。

ac5c411da9a946dd9923176808194af7.gif

射线传送实现原理:当挂载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脚本,否则当点击地面时会传送至地面相对应的锚点上)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值