You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Game Maker Studio 2中Xbox One手柄检测到但无输入问题求助

解决Xbox One手柄在GameMaker中无响应的问题

看起来你已经做了不少排查工作——手柄能被识别但输入没反应,GC手柄却正常,这确实有点棘手。结合你用的是Xbox One手柄而课程用的是360手柄,我整理了几个针对性的解决方案:

1. 先确认手柄的轴/按键是否真的有输入输出

首先添加调试代码,看看GameMaker是否能读取到手柄的实际输入值,这能帮你快速定位是映射问题还是其他隐藏问题:

// 在controller input代码块中添加调试输出
if gamepad_is_connected(_dev) {
    // 打印左摇杆X轴的实时数值
    show_debug_message("Left Stick X: " + string(gamepad_axis_value(_dev, gp_axislh)));
    // 打印A键的按下状态
    show_debug_message("A Button Pressed: " + string(gamepad_button_check_pressed(_dev, gp_face1)));
    
    var _deadzone = 0.3;
    // 原有输入逻辑代码...
}

运行游戏后查看输出窗口的调试信息:

  • 如果轴值一直显示为0,说明轴映射存在错误;
  • 如果按键状态始终是false,说明按键常量和手柄实际按键不匹配。

2. 修正Xbox One手柄的轴/按键映射

部分GameMaker版本中,Xbox One手柄的轴/按键预定义常量可能和Xbox 360有差异,你可以直接用索引代替预定义常量来测试:

替换轴映射(用索引代替gp_axislh等常量)

if gamepad_is_connected(_dev) {
    var _deadzone = 0.3;
    // 左摇杆X轴对应索引0
    left = gamepad_axis_value(_dev, 0) < -_deadzone;
    right = gamepad_axis_value(_dev, 0) > _deadzone;
    // 左摇杆Y轴对应索引1
    up = gamepad_axis_value(_dev, 1) < -_deadzone;
    down = gamepad_axis_value(_dev, 1) > _deadzone;
    
    // 按键用索引测试:A键通常是索引0,B键是1,右肩键是5
    attack = gamepad_button_check_pressed(_dev, 1); // B键对应attack
    jump = gamepad_button_check_pressed(_dev, 0); // A键对应jump
    jump_held = gamepad_button_check(_dev, 0);
    block = gamepad_button_check(_dev, 5); // 右肩键对应block
}

如果修改后手柄有反应,说明你当前GameMaker版本的预定义常量和Xbox One手柄的实际映射不匹配,后续可以根据测试出的索引重新定义自己的常量。

3. 调整死区设置

Xbox One手柄的摇杆输出精度可能和360手柄不同,你当前设置的0.3死区可能过高,导致轻微的摇杆移动被系统忽略。试试调小死区到0.2甚至0.15:

var _deadzone = 0.2;

4. 检查驱动和固件

  • 确保Windows系统安装了最新的Xbox One手柄驱动(可以通过设备管理器更新,或者安装Xbox Accessories应用);
  • 用Xbox Accessories应用更新手柄的固件,旧固件可能会导致兼容性问题。

5. 动态获取手柄设备索引

虽然你检测到设备0是Xbox One手柄,但有时候系统可能会重新分配设备索引。试试动态获取手柄设备,避免硬编码_dev=0:

var _dev = -1;
// 遍历所有设备,找到Xbox One手柄
for(var i = 0; i < gamepad_get_device_count(); i++) {
    if(gamepad_is_connected(i) && string_pos("XInput STANDARD GAMEPAD", gamepad_get_description(i)) != 0) {
        _dev = i;
        break;
    }
}

if(_dev != -1) {
    // 手柄输入逻辑代码...
}

内容的提问来源于stack exchange,提问作者Frédéric Bourdeau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:32:42