Блог ☯

пятница, 24 марта 2017 г.

Следование камеры за героем в 2D играх. Виды и мини карта в Game Maker

Сегодня я расскажу о том, как сделать следование камеры за героем в 2D играх. Это важная штука для многих типов игр, в частности для TDS (Top Down Shooter). Говорим мы как всегда про Game Maker (Любых версий, включая Game Maker Studio 2).

Прошлый урок вы можете найти тут:


Виды? О чём я говорю?

Вот смотрите, у нас есть уровень - комната размером 1000 на 1000 пикселей:

Следование камеры за героем в 2D играх. Виды и мини карта в Game Maker

Показываю на примере моей игры Lonely Dude

Сверху у нас герой. Карта размером 1000 на 1000 - слишком большая, таких разрешений не существует, а это значит нам нужно показывать не всю карту, а только определённую область этой карты.

В данном случае будет следование камеры за героем.

Чтобы это сделать нам нужно использовать так называемые виды (views).

В Game Maker они находятся в настройках комнат.

Следование камеры за героем в 2D играх. Виды и мини карта в Game Maker

Настройки будут примерно вот такие

Именно так камера следует за героем в данной игре. Кстати, исходник для игры Lonely Dude находится в свободном доступе, скачать его вы можете вот тут. Так всё это (и многое другое) уже есть, и на его примере можно учиться.

В данном случае разрешение игры у меня низкое и горизонтальное - 800 на 600 пикселей.

Что мы делаем?

Ставим галочку - enable the use of views, это разрешит использовать виды, нам это нужно. Включите как минимум у одного вида. Это покажет рамкой включённый вид в комнате.

Две следующие галочки не включаем.

Далее выбираем один из видов, например тут - view 0. Дело в том, что можно на одном экране одновременно показывать несколько видов. Могут быть прикольные фишки. Мини карта какая-нибудь или же например отдельная камера, которая показывает как летят пули/ракеты.

Но эти заморочки нам пока рано пробовать.

Далее нам нужно поставить галочку - visible when room starts (видно когда комната появляется). И далее начинается небольшая путаница.

  • View - зона в комнате, которую мы берём
  • Port of screen - зона на экране, где мы будет это зону в комнате показывать

Наверняка непонятно. Давайте покажу кое что...

Следование камеры за героем в 2D играх. Виды и мини карта в Game Maker

Во, справа сверху - миникарта. 

На примере того как сделать миникарту понять проще. Мы помимо первого, включаем еще один вид, тоже при старте комнаты. И делаем вот такие настройки:

Следование камеры за героем в 2D играх. Виды и мини карта в Game Maker

Новый вид - view 1

Что я сделал? Вид в комнате (комнаты) 1000 на 1000 - то есть, мы показываем всю комнату.

А где мы её показываем? А вот это уже порт на экран (port on screen). Квадрат размером 200 на 200 мы показываем на координатах 0, 600.

Итоговое разрешение у нас получается то-же самое (800 на 600). Вот размеры:

Следование камеры за героем в 2D играх. Виды и мини карта в Game Maker

По сути мы на том квадрате справа (мини карте) разместили всю нашу карту 1000 на 1000, и тут кстати за героем следовать вовсе не обязательно. Есть и проблема, объекты на миникарте плохо видны, криво сжались ну и т.д. Но это уже другой вопрос, главное понять принцип.

Можно например сделать знаете как? Вот так-же, только на мини карте прописать размер вида не 1000 на 1000, а всего-лишь 200 на 200, и при этом повесить следование за пулей.

Следование камеры за героем в 2D играх. Виды и мини карта в Game Maker

По центру уже не мини карта, а пуля. Извратился, сделал гифку

Пишется это так:

Следование камеры за героем в 2D играх. Виды и мини карта в Game Maker

Следование уже за пулей. 

Если надо, вместо пули там можно выбрать следование за прицелом, это кстати довольно прикольно будет.

Кстати, а как сделать так, чтобы например в правом верхнем углу всегда была надпись или картинка? Например - картинка оружия. И чтобы она тоже как-бы следовала за героем?

Для этого есть две функции:
view_xview[0]
view_yview[0]
Это привязка координат к виду. Например вы можете написать:
draw_text(view_xview[0]+725,view_yview[0]+25,string('HP: ')+string(global.hp))
Это будет отрисовывать переменную жизней (цифру) в правом верхнем углу. А с объектами можно просто в step (в шаге) указать x и y равными нужным вам координатам уже по отношению к комнате. Можно тут и без плюса, а сразу писать координаты.

На этом всё, если вам понравился этот урок, ставьте лайк и палец вверх чуть ниже.

Традиционно, сделал видео на эту тему (10 минут):