我正在学习这个 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 控制器。
请发送帮助!