javascript - js Gamepad API 中的映射错误是否有修复?
问题描述
我目前正在用香草 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,但除非绝对必要,否则我不想使用其他外部库(尽管请随意建议它们!)。
解决方案
游戏手柄mapping
被认为可以解决这个问题,但现在唯一的映射是"standard"
. 如果您使游戏控件可自定义(例如,您可以让玩家在游戏设置对话框中为“跳跃”动作选择首选按钮),您的游戏应该仍然可以玩。
推荐阅读
- node.js - 为什么我的数据没有添加到 heroku 沙箱数据库中?
- sql - 是否可以将外部数据处理为某种虚拟表?
- java - 当应用程序在后台时,Android 服务有时会停止工作
- javascript - 如何将条形图数据输入到整体饼图中?(Highcharts/JS/jQuery)
- python - 如何使用函数中的参数来定义要在函数中使用的数据框的名称?
- python - 如何将 caffe 模型和权重转换为 pytorch
- c# - 未找到连接字符串“SqlServer”
- c# - 多重继承,如何通过复制过去和维护来避免手动继承?
- python - 为什么熊猫在使用索引时合并速度较慢,如果它包含重复值?
- regex - 正则表达式检测带有数字的 URL 的电话号码错误