背景:
接收手柄按键信息是游戏必备操作,而VR设备信号的获取也存在多种方式。传统方法一般是通过InputDevice类来识别获取,根据情况也可以有更简单粗暴的方法,我这里先记录一下自己的小小总结。
软获取和硬获取- 对网上介绍的传统方法大致了解后,我犯懒的老毛病就又犯了。Unity既然能够通过Public直接托对象关联,我又何必麻烦指定对象呢?但是发现InputDevice类不支持直接暴露在Inspector中(静态类?),于是先
using UnityEngine.XR.Interaction.Toolkit;
然后声明一个public XRBaseController left_controller;Inspector上一关联就想爽爽用这个类实例下的成员属性接收手柄控制。 - 由于上述方法获取渠道不是Inputdevice,而是xrbasecontroller类,所以只能获得3种state,分别是activate,Select和UI Press,从Inspector上可以看到,这三种state都可以在面板上自定义关联哪几个键:
根据上图的匹配情况,
left_controller.uiPressInteractionState.value
获得的就是primary button的值。 - 这么一分析,似乎这种简单粗暴的方法就能够比较方便地获得手柄输入了,但是由于只能识别三种state,所以并不能映射所有的手柄按键。
- 另外在使用的感觉上,似乎这种用法存在一定的延迟效应,这应该是由于获取的对象类并不直接是device而导致。