Найти тему

Как адаптировать управление игры, созданной на Game Maker, для мобильных устройств

Оглавление

Добрый день, дорогие читатели! Кое-кто из подписчиков просил написать статью о том, каким образом можно адаптировать управление игры под телефоны, если изначально игра не была рассчитана на сенсорное управление. Т.е. вы например делали игру, где все управление размещено на клавиши, портировали игру в HTML5, залили игру на Яндекс Игры, но не понимаете как сделать так, чтобы можно было поиграть в такую игру не только с ПК, но еще и с телефона. Тут на помощь приходят виртуальные клавиши (virtual keys).

Что такое виртуальные клавиши (virtual keys)?

Думаю многие из вас уже не раз встречались с ними, но возможно просто не знали как они называются. Это кнопки, которые вынесены на экран вашего мобильного устройства. Пара примеров на скриншотах ниже:

Демонстрация виртуальных клавиш (изображение взято из сети интернет)
Демонстрация виртуальных клавиш (изображение взято из сети интернет)
Демонстрация виртуальных клавиш (изображение взято из сети интернет)
Демонстрация виртуальных клавиш (изображение взято из сети интернет)

С помощью таких клавиш вы можете уже спокойно взаимодействовать с игрой на устройстве, на котором присутствует лишь сенсорное управление (т.е. на котором нет клавиатуры).

Как создать виртуальные клавиши на Game Maker?

Какое-то время в Game Maker не было такого функционала как говорится из коробки и приходилось создавать эти клавиши самому с нуля. Но в новом Game Maker создать виртуальные клавиши стало проще простого. И сейчас я вас научу как это делать.

Для работы с виртуальными клавишами в Game Maker существует всего четыре функции:

  • virtual_key_add
  • virtual_key_show
  • virtual_key_hide
  • virtual_key_delete

Давайте подробно разберем каждую из них.

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

Для начала давайте разберемся со всеми параметрами этой функции:

virtual_key_add(x, y, w, h, keycode);
  • С помощью x и y вы указываете верхний левый угол виртуальной клавиши.
  • Параметром w задаете ширину клавиши в пикселях.
  • Параметром h задаете высоту клавиши в пикселях.
  • Параметром keycode вы указываете код клавиши с клавиатуры, которую должна дублировать эта виртуальная клавиша (например, vk_left - это код стрелки влево на клавиатуре, а ord("W") - код клавиши "W"). Все эти коды можно найти в справке Game Maker.

Давайте разберемся на примере:

vr_key_left = virtual_key_add (32, 32, 64, 64, ord("A"));

С помощью этого кода мы создаем виртуальную клавишу шириной и высотой 64 пикселя, в координатах 32 пикселя с левой стороны от экрана и 32 пикселя сверху экрана, данная виртуальная клавиша будет повторять нажатие кнопки "A" на клавиатуре и index этой клавишу мы присвоим переменной с именем vr_key_left. Для чего присваивать переменной индекс клавиши, я объясню позже (в общем, чтобы можно было проводить какие-то операции с этой виртуальной клавишей в дальнейшем).

Это событие достаточно написать в событии создания (Create) какого либо объекта. Вот собственно и все! Клавиша готова. Можете запустить игру и проверить.

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

Если вы запустили игру с ПК, то можно протестировать это кликом мышки в ту область, где вы создали клавишу и увидите, что все работает (при условии конечно, что у вас на данную клавишу на клавиатуре назначено какое-то действие, например поворот объекта или еще что-то).

2) virtual_key_show - а вот эта функция как раз и предназначена для того, чтобы ваша клавиша была видимой, т.е. чтобы ее можно было как-то визуализировать на экране. У данной функции всего один параметр - это index вашей виртуальной клавиши.

virtual_key_show(index);

Давайте на примере выше разберем, как записать эту функцию, чтобы она показала нашу созданную ранее виртуальную клавишу на экране.

virtual_key_show (vr_key_left);

Теперь думаю вы понимаете для чего мы записывали индекс созданной клавиши в переменную.

3) virtual_key_hide - уже не сложно догадаться, что просто прячет виртуальную клавишу на экране. Т.е. эта функция делает ровно противоположное функции virtual_key_show. У нее так же всего один параметр - индекс виртуальной клавиши, которую вы хотите скрыть. Пример записи:

virtual_key_hide (vr_key_left);

Надо понимать, что виртуальная клавиша все так же остается на экране после этой функции, просто ее не видно, но нажатия на экран так же будут срабатывать. А вот для того, чтобы полностью удалить виртуальную клавишу как раз и предназначена следующая функция.

4) virtual_key_delete - как уже написал выше, эта функция просто удаляет виртуальную клавишу. Параметр у нее так же всего один - индекс виртуальной клавиши, которую вы хотите удалить. Пример записи:

virtual_key_delete (vr_key_left);

Это все функции в Game Maker для работы с виртуальными клавишами.

Некоторые особенности виртуальных клавиш в Game Maker

В Game Maker есть некоторые особенности виртуальных клавиш, о которых важно помнить. Постараюсь вам рассказать о всех таких важных моментах.

1) Во-первых, виртуальная клавиша создается только на одну комнату (room). Т.е. при переходе в другую комнату, виртуальные клавиши автоматически удалятся. В данном случае вам нужно либо в каждой комнате иметь объект, который будет создавать их снова, либо создавать их раз в постоянном объекте (Persistent). Не забывайте об этом. А то удивитесь, что при переходе на новый уровень у вас вдруг неожиданно пропадут все клавиши.

2) Во-вторых, при создании виртуальной клавиши в параметрах координат вы указываете не координаты в комнате а координаты на экране! Т.е. это тоже самое, как если вы что-то рисуете в событии Draw GUI. И, например, если у вас в игре есть скроллинг, а вы указываете координаты клавиши 32 по x и 32 по y соответственно, то при смещении вида, клавиши всегда будут стоять на экране на одном и том же месте.

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

Как вы понимаете, virtual_key_show мало кто использует на практике, так как кнопка, показанная простым прямоугольником малоинформативна и непонятна игроку. По этому обычно рисуют спрайт клавиши (либо сразу полупрозрачный, либо снижают его прозрачность кодом, например image_alpha=0.5), размещают просто этот спрайт на экране и в том же месте создают невидимую виртуальную кнопку. Т.е. в этом случае вам ничего не мешает нарисовать спрайт круглой кнопки и поверх нее разместить невидимую квадратную виртуальную клавишу. Понятно, что она будет срабатывать и когда палец будет нажимать не на сам спрайт, а на углы квадрата, но это совсем не критично.

Пример круглого спрайта и квадратной виртуальной клавиши поверх него.
Пример круглого спрайта и квадратной виртуальной клавиши поверх него.

Спасибо, что дочитали до конца! Надеюсь материал вам понравится и окажется полезным. Надеюсь теперь вы сможете создавать игры, в которые можно будет играть не только с ПК, но и с мобильного устройства. Делитесь статьей, ставьте лайки, комментируйте, задавайте вопросы. Хотя бы так я вижу хоть какую-то активность, что для меня является мотивацией продолжать вести данный блог.