Unity3D OpenVR SteamVR Input Action 动作

2021-05-17 16:46:27 浏览数 (1)

本文来告诉大家在 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 类型
代码语言:javascript复制
        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

0 人点赞