本文来告诉大家在 Unity3D 中的 SteamVR Input 里面的 Action 动作行为
开始之前,请先阅读 Unity OpenVR 虚拟现实入门一:安装配置 Unity OpenVR 环境 - walterlv 和 Unity OpenVR 虚拟现实入门二:一个最简单的虚拟现实游戏/程序 - walterlv 配置完成环境
完成配置环境之后,即可在窗口里面找到 SteamVR Input 按钮,通过点击此按钮即可打开 SteamVR Input 界面
默认打开的 SteamVR Input 界面会比较小,请将他拖动修改到足够大小,期望能看到如下界面所有按钮
以上即可看到各个不同的交互类型,每个交互类型可以抽象为以下不同的动作类型
- Boolean 类型动作: 表示只有两个状态的动作,如跳起,只有不跳和跳。对应
SteamVR_Action_Boolean
类型 - Single 类型动作: 表示 [0,1] 过程的范围值,如 Trigger 键按下到松开的过程。对应
SteamVR_Action_Single
类型 - Vector2 类型动作: 可以表示如 x 和 y 方向的值,如上下左右方向,如 手柄摇杆 的功能。对应
SteamVR_Action_Vector2
类型 - Vector3 类型动作: 返回三维的数值,对应
SteamVR_Action_Vector3
类型 - Pose 类型动作: 返回三维空间中的位置和旋转,如跟踪 VR 控制器,对应
SteamVR_Action_Pose
类型 - Skeleton 类型动作: 对应
SteamVR_Action_Skeleton
类型
switch (o)
{
case SteamVR_Action_Boolean _: break;
case SteamVR_Action_Single _: break;
case SteamVR_Action_Vector2 _: break;
case SteamVR_Action_Vector3 _: break;
case SteamVR_Action_Pose _: break;
case SteamVR_Action_Skeleton _: break;
}
额外还有 SteamVR_Action_Vibration
动作,这个大多数是用来作为输出的,如输入到手柄作为反馈
在 SteamVR 开发中,不推荐使用绑定具体的按钮或交互硬件设备上,而是通过抽象的输入。具体来说,不推荐将某个动作的输入绑定到具体的交互硬件设备如摇杆上,如获取摇杆的状态等。推荐的开发方式是定义抽象的交互方式,接着通过抽象的交互方式绑定到自身的输入源上面。此做法的优势在于给玩家更好的定制化,以及更好适配更多厂商的硬件,更好适配未来的硬件设备。例如定义一个叫 DirectMovemont 的动作,此动作表示角色摄像机的移动,输入类型是 SteamVR_Action_Vector2
类型,而具体交给什么样的硬件设备就没有做强制约束,而是可以给到用户端进行自定义适配。默认的 SteamVR 会有默认的交互,通过 SteamVR Input 窗口的 Open Binding UI 按钮,即可打开对应的按键绑定功能
定义具体的交互绑定的定义,如在代码中定义交互的输入,以及绑定到具体的硬件设备上,请参阅 Unity OpenVR 虚拟现实入门六:通过摇杆控制玩家移动 - walterlv