gpt4 book ai didi

javascript - 在 Oculus 浏览器中通过 GamePad API 访问 Oculus Go Controller ?

转载 作者:行者123 更新时间:2023-11-30 06:20:54 26 4
gpt4 key购买 nike

我正在我的新 Oculus Go 中测试我的几个 three.js 应用程序。我想知道是否可以仅使用目前似乎可用于主要浏览器的 GamePad API 来访问 Controller 。

查看Oculus 文档,似乎可以通过Unity 自带的OVRManager 或UnReal Blueprints 来完成。但我正在努力避免另一个学习曲线,并在可以避免的情况下增加我的应用程序。

作为 VR 的新手,似乎最有利的继续进行的方式就是通过执行类似的操作来使用 Gamepad API(这不是工作代码的胆量,但我正在努力获得在这种方法的问题上,除了当我进入 VR 模式时破坏应用程序之外,到目前为止没有任何结果):

var gamePadState = {
lastButtons: {},
lastAxes: {}
};

function onGamePad(){

Array.prototype.forEach.call( navigator.getGamepads(), function (activePad, padIndex){
if ( activePad.connected ) {
if (activePad.id.includes("Oculus Go")) {
// Process buttons and axes for the Gear VR touch panel
activePad.buttons.forEach( function ( gamepadButton, buttonIndex ){
if ( buttonIndex === 0 && gamepadButton.pressed && !lastButtons[buttonIndex]){
// Handle tap
dollyCam.translateZ( -0.01 );
}
gamePadState.lastButtons[buttonIndex] = gamepadButton.pressed;
});

activePad.axes.forEach( function (axisValue, axisIndex ) {
if (axisIndex === 0 && axisValue < 0 && lastAxes[axisIndex] >= 0 ){
// Handle swipe right
} else if (axisIndex === 0 && axisValue > 0 && lastAxes[axisIndex] <= 0) {
// Handle swipe left
} else if (axisIndex === 1 && axisValue < 0 && lastAxes[axisIndex] >= 0) {
// Handle swipe up
} else if (axisIndex === 1 && axisValue > 0 && lastAxes[axisIndex] <= 0) {
// Handle swipe down
}
gamePadState.lastAxes[axisIndex] = axisValue;
});
} else {
// This is a connected Bluetooth gamepad which you may want to support in your VR experience
}
}
});

}

another, narrower question我提出了这个主题,有人建议我在我的应用程序中创建一个 Unity 构建以获得我想要的结果,这似乎是一个额外的学习曲线,而且增加了我的开销。如果必须,我会做,但如果不需要,我宁愿不做。

最终我希望能够使用这样的逻辑来支持大多数“主要” Controller :

onGamePad( event ){

var gamePads = navigator.getGamepads();

if ( gamePads && gamePads.length > 0 && event.isSomeGamePadEventOfSomeSort ){
for ( var p = 0; p < gamePads.length; p ++ ){
if ( gamePads[ p ].id.includes( "Oculus Go" ) ){
// process buttons and axes for the Oculus Go Controller here
if ( event[ some property... gamePad?? ].id.includes( "Oculus Go" ) && event[ some property... gamePad?? ].button.pressed === someIndex ){
doSomething();
}
}
else if ( gamePads[ p ].id.includes( "Oculus Gear VR" ){
// Process buttons and axes for the Oculus Gear VR Controller here...
}
}
}

}

但出于测试目的,我会很感激现在让 Oculus Go Controller 运行。

那么...是否可以通过 Gamepad API 访问 Oculus Go Controller ,我如何访问设备属性,例如按钮、轴和方向,以及相关的游戏 handle 事件?

谢谢。

最佳答案

当然,您可以直接使用 Gamepad API 而无需求助于 Unity。几个月前我写了自己的 Oculus Go controller而且它需要的代码比你想象的要少得多。由于我的代码已在 GitHub 上免费提供,因此我不会将其复制到此站点。

关于javascript - 在 Oculus 浏览器中通过 GamePad API 访问 Oculus Go Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53198367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com