我目前正在用香草 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 | 一个 | 力量 |
| 1 | 乙 | 一个 |
| 2 | X | 乙 |
| 3 | 是的 | X |
| 4 | 左保险杠 | 不适用 |
| 5 | 右保险杠 | Y、左保险杠 |
| 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 控制器,以及 Replit 作为 Firefox 上的 IDE。我很高兴使用 JQuery,但除非绝对必要,否则我不想使用其他外部库(尽管请随意建议它们!)。