Игра астероидов. Программа не позволяет одновременно нажимать левую, верхнюю и пробел

Я пишу основную игру астероидов. Вот мой экран объекта для моего объекта космического корабля

введите описание изображения здесь

Код в каждом из моих действий

//Step
speed = max(speed - 0.01, 0);

//Left 
image_angle += 2;

//Right
image_angle -= 2;

//Outside Room
//Drag and drop item: wrap screen

//press Space
bullet = instance_create(x, y, obj_bullet);
bullet.direction = image_angle;
bullet.speed = 15;

Проблема в том, что когда я держу обе клавиши вправо и вверх, я могу стрелять с помощью пробела. Однако, когда я держу левую и верхнюю клавиши и нажимаю пробел, он не стреляет. Это почему?

Я надеюсь, что предоставил достаточно информации здесь. Если этого недостаточно, пожалуйста, дайте мне знать. Размещение кода здесь намного сложнее, чем размещение кода для программы на Си.

1 ответ

Вместо того, чтобы иметь отдельные обработчики событий, попробуйте использовать keyboard_check(key) в событии step. IE: удалить или закомментировать код в действиях left, up, right и space, и включить в событие step что-то вроде...

//Speed
speed = max(speed - 0.01, 0);

//Turn
image_angle += ((keyboard_check(vk_right)-keyboard_check(vk_left)*2);

//Shoot
if keyboard_check_pressed(vk_space)
{
bullet = instance_create(x, y, obj_bullet);
bullet.direction = image_angle;
bullet.speed = 15;
}

Надеюсь, что это работает:)

Другие вопросы по тегам