本文来告诉大家在 Unity3D 中的 SteamVR Input 里面的 Action 动作行为

开始之前,请先阅读 Unity OpenVR 虚拟现实入门一:安装配置 Unity + OpenVR 环境 - walterlvUnity 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

系列博客请看

参阅: SteamVR 2.0 Unity插件使用指南_sovida的博客-CSDN博客


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/Unity3D-OpenVR-SteamVR-Input-Action-%E5%8A%A8%E4%BD%9C.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

无盈利,不卖课,做纯粹的技术博客

以下是广告时间

推荐关注 Edi.Wang 的公众号

欢迎进入 Eleven 老师组建的 .NET 社区

以上广告全是友情推广,无盈利