AFrame имеет множество встроенных функций, таких как поддержка контроллеров, таких как геймпады.
В своей документации они рекомендуют использовать компонент "tracked-controls" , который, в свою очередь, выберет правильный Компонент устройства в соответствии с тем, что доступно для браузера. Кажется, это не работает для меня, когда в режиме рабочего стола в aframe v1.0.4
я использую
- Chrome v81.0.4044.122 (windows)
- xbox gamepad
- aframe v1.0.4 (последний пакет npm на момент написания этой статьи)
Я могу найти геймпад при запросе браузера gamepad api напрямую .
Я объявляю свою сущность так: <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
исключит практически каждый браузер на рабочем столе?
Так что мой вопрос Хен, игровые планшеты вообще должны поддерживаться в режиме рабочего стола?
Или я полностью упустил возможность указать, как использовать эту функцию, и если да, пожалуйста, укажите мне правильное направление:)