aframe v1.0.4+如何在桌面模式下启用游戏手柄?

问题描述 投票:0回答:1

AFrame内置了很多很酷的东西,比如支持游戏手柄等控制器。在他们的文档中,他们推荐使用组件 "跟踪控制" 然后根据浏览器的可用情况选择正确的设备组件。当我在aframe v1.0.4的桌面模式下,这个功能似乎完全不起作用。

我使用的是

  • Chrome v81.0.4044.122 (windows)
  • 游戏手柄
  • aframe v1.0.4 (写这篇文章时最新的npm包)

直接查询浏览器gamepad api的时候可以找到gamepad。

我这样声明我的实体。<a-entity mycomponent tracked-controls></a-entity> 然后我就可以看到那个框架 然后把它转化为: <a-entity mycomponent tracked-controls-webxr></a-entity> 文档中解释的那样。

在我的自定义组件中 mycomponent 然后我想听一下游戏手柄的事件,像这样。

events: {
      "controllerconnected": function () {
         log.info("controllerconnected");
      },
      "buttonchanged": function () {
         log.info("buttonchanged");
      }
   }, 

但我从来没能得到这些事件。

所以我深入研究了一下源代码,看看什么时候aframe会附加它的内部游戏手柄事件监听器,据我所知,这一切都归结为对变量的依赖。isWebXRAvailable 在桌面模式下,并且存在组件 tracked-controls-webxr.

var isWebXRAvailable = module.exports.isWebXRAvailable = !window.debug && navigator.xr !== undefined;

!window.debug 将排除几乎所有的桌面浏览器?

那么我的问题是,在桌面模式下是否应该支持游戏板?或者说我完全没有注意到如何使用这个功能,如果是这样的话,请给我指明正确的方向:)

aframe
1个回答
1
投票

tracked-controls是为空间跟踪控件设计的,比如VR头盔提供的Vive Wands或Oculus Touch。没有对传统游戏手柄的开箱支持。你可以使用Gamepad API来手动集成,或者看一看 运动控制

© www.soinside.com 2019 - 2024. All rights reserved.