Игра астероидов. Программа не позволяет одновременно нажимать левую, верхнюю и пробел
Я пишу основную игру астероидов. Вот мой экран объекта для моего объекта космического корабля
Код в каждом из моих действий
//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;
}
Надеюсь, что это работает:)