Прошлый урок вы можете найти тут:
Виды? О чём я говорю?
Вот смотрите, у нас есть уровень - комната размером 1000 на 1000 пикселей:
Показываю на примере моей игры Lonely Dude
Сверху у нас герой. Карта размером 1000 на 1000 - слишком большая, таких разрешений не существует, а это значит нам нужно показывать не всю карту, а только определённую область этой карты.
В данном случае будет следование камеры за героем.
Чтобы это сделать нам нужно использовать так называемые виды (views).
В Game Maker они находятся в настройках комнат.
Настройки будут примерно вот такие
Именно так камера следует за героем в данной игре. Кстати, исходник для игры Lonely Dude находится в свободном доступе, скачать его вы можете вот тут. Так всё это (и многое другое) уже есть, и на его примере можно учиться.
В данном случае разрешение игры у меня низкое и горизонтальное - 800 на 600 пикселей.
Что мы делаем?
Ставим галочку - enable the use of views, это разрешит использовать виды, нам это нужно. Включите как минимум у одного вида. Это покажет рамкой включённый вид в комнате.
Две следующие галочки не включаем.
Далее выбираем один из видов, например тут - view 0. Дело в том, что можно на одном экране одновременно показывать несколько видов. Могут быть прикольные фишки. Мини карта какая-нибудь или же например отдельная камера, которая показывает как летят пули/ракеты.
Но эти заморочки нам пока рано пробовать.
Далее нам нужно поставить галочку - visible when room starts (видно когда комната появляется). И далее начинается небольшая путаница.
- View - зона в комнате, которую мы берём
- Port of screen - зона на экране, где мы будет это зону в комнате показывать
Наверняка непонятно. Давайте покажу кое что...
Во, справа сверху - миникарта.
На примере того как сделать миникарту понять проще. Мы помимо первого, включаем еще один вид, тоже при старте комнаты. И делаем вот такие настройки:
Новый вид - view 1
Что я сделал? Вид в комнате (комнаты) 1000 на 1000 - то есть, мы показываем всю комнату.
А где мы её показываем? А вот это уже порт на экран (port on screen). Квадрат размером 200 на 200 мы показываем на координатах 0, 600.
Итоговое разрешение у нас получается то-же самое (800 на 600). Вот размеры:
По сути мы на том квадрате справа (мини карте) разместили всю нашу карту 1000 на 1000, и тут кстати за героем следовать вовсе не обязательно. Есть и проблема, объекты на миникарте плохо видны, криво сжались ну и т.д. Но это уже другой вопрос, главное понять принцип.
Можно например сделать знаете как? Вот так-же, только на мини карте прописать размер вида не 1000 на 1000, а всего-лишь 200 на 200, и при этом повесить следование за пулей.
По центру уже не мини карта, а пуля. Извратился, сделал гифку
Пишется это так:
Следование уже за пулей.
Если надо, вместо пули там можно выбрать следование за прицелом, это кстати довольно прикольно будет.
Кстати, а как сделать так, чтобы например в правом верхнем углу всегда была надпись или картинка? Например - картинка оружия. И чтобы она тоже как-бы следовала за героем?
Для этого есть две функции:
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 минут):