Геймпад XBOX One обнаружен в слоте 0, но не обнаружен ввод в Game Maker Studio 2

Я следую этому курсу 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, но у меня та же проблема. Когда я пытаюсь подключить свой контроллер gamecube с помощью адаптера контроллера Mayflash GC к слоту 4, он работает. Я упустил что-то конкретное о контроллерах XBOX One? Я думаю, что на курсе преподаватель использует контроллер XBOX 360, которого у меня нет.

Пожалуйста, пришлите помощь!


person Frédéric Bourdeau    schedule 09.02.2020    source источник


Ответы (1)


В прошлом месяце я пытался реализовать поддержку контроллера с помощью контроллера XBox One, и у меня все заработало. Также с использованием gamepad_button_check() и gamepad_axis_value() и других переменных, которые я использовал по этой ссылке: https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/controls/gamepad%20input/index.html

Я использую как gamepad_is_supported, так и gamepad_is_connected в коде геймпада, чтобы убедиться, что геймпад найден.

Должна быть возможность работать с контроллером XBox One.
Так что, возможно, проблема в чем-то нестандартном. (например, вы проверили, установлен ли контроллер на вашем ПК? Или соединение установлено только в событии создания и не обновляется при подключении контроллера?)

person Steven    schedule 10.02.2020