如何解决js Gamepad API 中的错误映射是否有修复?
我目前正在用 vanilla JS 构建一个小游戏,但是当我在处理控制器(底部的规格)输入时,它错误地映射了按钮。它具有与游戏手柄 API 标准控制器相同数量的输入,以及所有相同的控件,但它以无法播放的方式匹配。我使用了另一个程序(在 API 文档中提供)来测试我的控件,当我发现它不起作用时,我写了这篇小曲:
let gamepad = null;
window.addEventListener("gamepadconnected",function(e) {
console.log(`gamepad: connected`);
gamepad = e.gamepad;
});
function loop(){
if(gamepad){
let buttons = gamepad.buttons;
for(let n = 0; n <= 16; n++){
//16 is the maximum buttons allowed,I checked
if(buttons[n].pressed)
console.log(`pressed: ${n}`);
}
}
}
setInterval(loop,45);
有关不匹配控件的列表,请参见下表:
索引 | 应该是什么 | 什么是 |
---|---|---|
0 | A | 电源 |
1 | B | A |
2 | X | B |
3 | 是 | X |
4 | 左保险杠 | 不适用 |
5 | 右保险杠 | 是,左保险杠 |
6 | 左扳机 | 不适用 |
7 | 右触发器 | 不适用 |
8 | 选择 | 选择,右侧保险杠 |
9 | 开始 | 不适用 |
10 | 左摇杆 | 不适用 |
11 | 右键按钮 | 左摇杆 |
12 | dpad_up | dpad_up |
13 | dpad_down | dpad_down |
14 | dpad_left | dpad_left |
15 | dpad_right | dpad_right |
16 | 力量 | 右键,开始 |
如果有人有任何类型的解决方法,我将不胜感激。
注意事项: 我正在使用 M1 macbook pro(最新型号)、带蓝牙和耳机插孔的 XBox One 控制器,以及作为 Firefox 上的 IDE 的 Replit。 我很乐意使用 JQuery,但除非绝对必要,否则我不想使用其他外部库(尽管可以随意推荐它们!)。
解决方法
游戏手柄 mapping
被认为可以解决这个问题,但目前唯一的映射是 "standard"
。如果您使游戏控件可自定义(例如,您可以让玩家在游戏的设置对话框中为“跳跃”操作选择首选按钮),您的游戏应该仍然可以玩。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。