【问题标题】:Intercept Vive controller input?拦截 Vive 控制器输入?
【发布时间】:2019-01-13 20:35:00
【问题描述】:

我正在为 steamvr 构建一个 openvr 应用程序来协助坐着玩(我的房间很小,所以我的跟踪区域并不理想)。当我按住手柄按钮并在触摸板上“滚动”时,我的应用程序几乎只是调整了游戏区域的高度,这样我就可以在不同的高度接触到太低/太高的物体。 (我尝试了“OpenVR 高级设置”,但与它的键绑定选项仅限于简单的按钮按下,所以我决定制作自己的版本)。

我想防止在按住手柄按钮时将触摸板输入发送到游戏,以便触摸板上的移动不会导致游戏移动,这可能吗?

我假设这是不可能的,但想知道是否有人对此有任何经验。

【问题讨论】:

  • 只有在您在某处实现此功能时,触摸板上的移动才会导致游戏移动,对吧?因此,只有在未按下握持按钮的情况下,您才能执行此操作
  • 我想你误解了我的意思。我正在开发要在游戏中使用的覆盖应用程序,当然我无法访问游戏代码。我正在使用 SteamVR.instance.hmd.GetControllerState 检查控制器上按钮/触摸板的状态,我的应用程序不发送这些输入,它正在监听它们。我想知道 steamvr 是否有任何功能可以吃输入而不是将其发送到游戏,我想我记得在某处看到过它的示例,但我不记得了。
  • 好吧,我明白了

标签: unity3d virtual-reality htc-vive openvr steamvr


【解决方案1】:

在您在 cmets 中澄清后,答案是否定的,您不能在应用程序中“吃掉”设备输入,我通常在 OpenVR 驱动程序上工作,并且在您提交设备输入和/或任何其他可用的事件之后任何期望姿势更新事件,并且事件订阅者不能阻止其他人接收所述事件

但是可能有一个解决方法(如果它仍然是一个问题)我知道至少有 1 个应用程序可以执行您想要的操作,并且该应用程序是 OVR Toolkit(当覆盖处于活动状态并且您尝试单击覆盖,并行运行的游戏将不会接收输入,但是只有当 OVR Toolkit 覆盖表面接收到输入时才会发生这种情况,它可能是内置的 OpenVR 覆盖功能,您无需执行任何操作,也可以定义为开发者,我现在真的不想测试这个)

遗憾的是,尽管 OVR Toolkit 不是开源的,但是有一个用于统一制作叠加层的开源工具包,它是开源的,可能是您正在寻找的解决方案,可以找到 here

【讨论】:

    猜你喜欢
    • 2018-11-29
    • 2018-03-31
    • 2018-08-11
    • 2011-08-26
    • 2015-01-09
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多