【Quest开发】玩家传送移动转向配置
软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72(要提前导入哦)
硬件:Meta Quest3
参考Meta开发文档:https://developers.meta.com/horizon/documentation/unity/unity-isdk-locomotion-interactions
实现这几个功能的原理大概是这样(当然我们不用从底层开始配,只是讲一下原理方便理解)
可以发现很好套公式哈,interactor检测到事件触发的条件就唤醒事件,然后事件广播给那些等着它消息的方法,那些方法就按自己的一套逻辑开始执行(最后一个组件Handler似乎不是必要的,我在实际配置时并没有见到过它)
先对这几个概念留个印象
1、移动模式
StepLocomotion:在摇杆移动时以离散量移动(卡顿式移动)
SlideLocomotion:在摇杆移动时以连续量(一个速度值)移动
Teleport:传送
2、旋转模式
Snap:离散量旋转(直观看就是卡顿式旋转,不容易晕)
Smooth:随着摇杆转动,平滑地转动
一、手柄手势传送、转向
1、配置OVRCameraRig
在场景Hierarchy里右键添加,这个预制体特别完整,你想要的全都有(因为各种interactor都加上去了)
2、配置传送区域
我这里创了一个Plane当地板,同样右键添加传送区域
这个传送区域很灵活,还配了一个Wizard(向导)帮我们根据目标物体的不同来初始化所需组件
我暂时只需要Plane和Hotspot,其他的还没有尝试,大家自己探索吧。
点击create以后就配好啦
再建几个可传送物体,同样的操作,只是type选择Hotspot
PS.传送Hotspot时会传送到它的坐标轴中心去,记得让它的坐标轴中心和地面持平,不然会陷进地里
3、运行测试
手柄版
手势版
手势传送转向有两个姿势,大家去示例场景里面学一下https://developers.meta.com/horizon/documentation/unity/unity-isdk-example-scenes/#locomotionexamples
二、手柄移动(Slide与Step)
为什么没有手势移动,因为官方没这个功能,推测是因为很难用一种手势判定前移
同样是用之前的CameraRig物体(我下面只改了左手的功能,右手保留转向和传送功能)
Slide:找到ControllerSlideInteractor把它打开,其他interactor都关掉就可以咯(一个手柄不能传送转向和移动并存)
Step:找到ControllerStepInteractor把它打开,其他的关掉
但是默认是不能向前移动,只能向左右后移动,所以还要改一个配置。在ControllerStepInteractor上找到下面这个D Pad Unity Event Wrapper组件,可以看到Press Up()是空的,我们要为它加上方法。
添加StepForward方法
实现Step移动。
三、手柄Snap旋转与Smooth旋转切换
同样是在官方提供的CameraRig基础上,找到ControllerTurnerInteractor
选择想要的就行(个人更推荐Snap,Smooth小心给自己转吐)