Unity VR:关于如何捕捉VR手柄按键

背景:

接收手柄按键信息是游戏必备操作,而VR设备信号的获取也存在多种方式。传统方法一般是通过InputDevice类来识别获取,根据情况也可以有更简单粗暴的方法,我这里先记录一下自己的小小总结。

软获取和硬获取

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

你可能感兴趣的:(unity,VR,C#,vr,unity,游戏引擎)