Щелчок по паузе в меню Game maker

#android #game-maker

#Android #создатель игр

Вопрос:

У меня есть контроллер паузы obj. Раньше это работало при использовании стрелки вверх / вниз, затем enter, чтобы щелкнуть что-то в меню паузы. НО как именно я могу это сделать, используя щелчки левой кнопкой мыши (сенсорный экран) вместо клавиши ввода. У меня есть этот код в качестве клавиши ввода.

 if (interest == "resume")
{
    instance_destroy();
}
else if (interest == "levels")
{
    room_goto(worlds);  
}
else if (interest == "main_menu")
{    
    room_goto(main);
}
 

И это в моем графическом интерфейсе рисования

 draw_sprite(background, 0, 640, 360);
draw_sprite(spr_border, 0, 640, 360);

if (interest == "resume")
{
    draw_sprite(spr_resume, 0, 640, 360 - 100);
    draw_sprite(spr_levels, 0, 640, 360);
    draw_sprite(spr_main_menu, 0, 640, 360   100);
}
else if (interest == "levels")
{
    draw_sprite(spr_resume, 0, 640, 360 - 100);
    draw_sprite(spr_levels, 0, 640, 360);
    draw_sprite(spr_main_menu, 0, 640, 360   100);
}
else if (interest == "main_menu")
{
    draw_sprite(spr_resume, 0, 640, 360 - 100);
    draw_sprite(spr_levels, 0, 640, 360);
    draw_sprite(spr_main_menu, 0, 640, 360   100);
}
 

Я попытался использовать это в своем пошаговом событии, чтобы заставить нажатие (касание) работать, но оно вообще не работает (ничего не активируется при касании или нажатии).). Это вообще правильно?

 if(device_mouse_check_button_released(0, mb_left)){
    if (device_mouse_x(0) > 640 amp;amp; device_mouse_x(0) < 640   sprite_get_width(spr_resume)
   amp;amp; device_mouse_y(0) > 260 amp;amp; device_mouse_y(0) < 260   sprite_get_height(spr_resume)){
      //RESUME IS TOUCHED
   }
 }  
   if(device_mouse_check_button_released(0, mb_left)){
       if (device_mouse_x(0) > 640 amp;amp; device_mouse_x(0) < 640   sprite_get_width(spr_levels)
    amp;amp; device_mouse_y(0) > 260 amp;amp; device_mouse_y(0) < 260   sprite_get_height(spr_levels)){

  }
}

if(device_mouse_check_button_released(0, mb_left)){
    if (device_mouse_x(0) > 640 amp;amp; device_mouse_x(0) < 640   sprite_get_width(spr_main_menu)
    amp;amp; device_mouse_y(0) > 260 amp;amp; device_mouse_y(0) < 260   sprite_get_height(spr_main_menu)){
   }
}
 

Ответ №1:

Я вижу ряд проблем с вашим кодом, которые вам всем нужно будет решить, чтобы что-то работало:

  1. Ваша переменная интереса проверяется на наличие изменений, но на самом деле она нигде не изменилась (я бы ожидал, что она будет изменена в вашем сценарии событий step, но это ничего не делает).
  2. Ваш графический графический скрипт рисует одно и то же для трех разных значений, представляющих интерес. Никаких видимых изменений нет.
  3. Вы переходите в новую комнату и одновременно отображаете выбранный интерес (при отпускании выбора), что означает, что вы никогда не увидите выбор. Вы должны а) нарисовать выбранный интерес при нажатии и б) перейти в комнату при отпускании.

Кроме того, имейте в виду, что более одного пальца могут касаться экрана одновременно — вы проверяете только первое касание, когда их может быть 5.

Последнее предложение в контексте GameMaker — использовать объекты для проверки событий нажатия и отпускания пальцев (события мыши переводятся как события пальцев на сенсорных экранах), а не сканировать области экрана на предмет нажатий. Это то, что делает GameMaker намного проще в использовании, поскольку он автоматически проверяет область спрайтов экземпляра на наличие коллизий, встроенное поведение.