0

我正在学习这个 udemy 课程,在我们实现非常简单的游戏手柄支持的部分中,我无法让我的 XBOX One 控制器像讲座中演示的那样工作。这是同时支持键盘(在没有连接控制器时工作正常)和游戏手柄支持的 get_input() 脚本。

//keyboard input
left = keyboard_check(vk_left);
right = keyboard_check(vk_right);
up = keyboard_check(vk_up);
down = keyboard_check(vk_down);
attack = keyboard_check_pressed(vk_shift);
jump = keyboard_check_pressed(vk_space);
jump_held = keyboard_check(vk_space);
block = keyboard_check(ord("Z"));

//controller input
var _dev = 0;
if gamepad_is_connected(_dev) {
    var _deadzone = 0.3;
    left = gamepad_axis_value(_dev, gp_axislh) < -_deadzone;
    right = gamepad_axis_value(_dev, gp_axislh) > _deadzone;
    up = gamepad_axis_value(_dev, gp_axislv) < -_deadzone;
    down = gamepad_axis_value(_dev, gp_axislv) > _deadzone;
    attack = gamepad_button_check_pressed(_dev, gp_face2);
    jump = gamepad_button_check_pressed(_dev, gp_face1);
    jump_held = gamepad_button_check(_dev, gp_face1);
    block = gamepad_button_check(_dev, gp_shoulderr);
}

我知道我的游戏手柄被检测到,因为当我运行此代码时:

var numPads= gamepad_get_device_count();
for(var i = 0; i < numPads; i++;)
{
    if(gamepad_is_connected(i)) show_message(string(i) + ": " + gamepad_get_description(i));
}

我收到一条消息说“0:XInput STANDARD GAMEPAD”。但是,当我启动游戏并尝试使用按钮或操纵杆时,没有任何反应。我尝试使用两个不同的 XBOX One 控制器,但我遇到了同样的问题。当我尝试使用插槽 4 上的 Mayflash GC 控制器适配器连接我的 gamecube 控制器时,它可以工作。我是否遗漏了有关 XBOX One 控制器的某些特定内容?我认为在课程中老师使用了我没有的 XBOX 360 控制器。

请发送帮助!

4

1 回答 1

1

上个月我尝试使用 Xbox One 控制器来实现对控制器的支持,我让它工作得很好。还使用gamepad_button_check()andgamepad_axis_value()和我在此链接中使用的其他变量:https ://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/controls/gamepad%20input/index.html

我同时使用gamepad_is_supportedgamepad_is_connected在游戏手柄代码中确保它找到了游戏手柄。

应该可以使用 Xbox One 控制器。
所以也许问题是开箱即用的。(例如,您是否检查过控制器是否安装在您的 PC 上?或者连接仅在创建事件中,并且在插入控制器时它不会更新?)

于 2020-02-10T08:45:53.133 回答