网页是否可以简单地使用诸如document.addEventListener之类的通用javascript代码来侦听Oculus控制器的按钮按下。
默认情况下,在VR浏览器中,主拇指会上下滚动页面。其想法是重新映射它以触发不同的操作。
从我的研究看来,我需要使用一个A框架,但我正在寻找一个通用的解决方案,在不同的网站上只使用Vanilla Javascript,而不是在沉浸式的上下文中。

发布于 2022-07-08 23:41:58
总之,没有。
不可能在沉浸式WebXR上下文之外与Oculus控制器进行接口。
虽然Gamepad记录是由Gamepad API规范定义的,但它实际上并不是由Gamepad API管理的。
因此,Gamepad API将无法工作,我们被迫使用Gamepad API。此外,我们被迫在webxr会话中使用一种沉浸式模式。WebXR控制器样本声明(确认了这一点,请参阅下面规则中的注释):
WebXR游戏垫在内联会话期间不可用。
话虽如此你还是可以..。
用最少的(香草) Javascript来做。
根据您对香草的定义,这将有效(码箱):
const gl2 = document
.querySelector('canvas.c3d')
.getContext('webgl2');
const session = await navigator.xr.requestSession('immersive-vr')
session.updateRenderState({ baseLayer: new XRWebGLLayer(session, gl2) });
const hookGamepadControls = () => {
const gamepad = session?.inputSources?.[0]?.gamepad; //replace with code to choose appropriate input source/controller
if (gamepad) {
setInterval(scroll(gamepad), 30);
}
};
session.requestAnimationFrame(hookGamepadControls); //We can request a single frame and run a timer to poll controller, no need to request additional frames获得Oculus或任何VR/AR/XR控制器/游戏垫显示时应遵循的最低规则:
inline上下文中,只有immersive-vr或immersive-ar (否则source.gamepad将为空)。source.gamepad将为null)https://stackoverflow.com/questions/72789605
复制相似问题