【发布时间】:2021-07-01 18:33:00
【问题描述】:
我目前正在用香草 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);
有关不匹配控件的列表,请参见下表:
| Index | What should be | what is |
|---|---|---|
| 0 | A | Power |
| 1 | B | A |
| 2 | X | B |
| 3 | Y | X |
| 4 | left bumper | n/a |
| 5 | right bumper | Y, left bumper |
| 6 | left trigger | n/a |
| 7 | right trigger | n/a |
| 8 | select | select, right bumper |
| 9 | start | n/a |
| 10 | left stick button | n/a |
| 11 | right stick button | left stick button |
| 12 | dpad_up | dpad_up |
| 13 | dpad_down | dpad_down |
| 14 | dpad_left | dpad_left |
| 15 | dpad_right | dpad_right |
| 16 | power | right stick button, start |
如果有人有任何类型的解决方法,我将不胜感激。
注意事项: 我正在使用 M1 macbook pro(最新型号)、带蓝牙和耳机插孔的 Xbox One 控制器,以及 Replit 作为 Firefox 上的 IDE。 我很高兴使用 JQuery,但除非绝对必要,否则我不想使用其他外部库(尽管请随意提出建议!)。
【问题讨论】:
-
有什么问题?如果您知道实际映射是什么,请在您的应用程序中使用它。
-
虽然如果两个按钮生成相同的代码,似乎有些问题。
-
@Barmar 有两个问题:1)按钮不生成唯一代码,2)你不能(据我所知)做任何真正的自定义映射。事后仅重新路由按钮输入,并且控制器只有一种布局(“标准布局”)。
标签: javascript game-development gamepad-api