Найти тему
The KoTGoT

Game Maker. Урок #5. "Усовершенствованное управление. Остановка персонажа в том же положении, куда он шёл".

Оглавление

  • А вы знали, что начиная с Урока №5 качество статей улучшилось? Вместо скриншотов, появились гифки (новый формат можете оценить в комментариях). Теперь уроки стали нагляднее! Приятного просмотра!

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

В этом уроке я покажу вам максимально проработанное управление персонажем.

1. Создаём объект и добавляем передвижение (если вы помните прошлый урок, то можете пропустить этот пункт).

  • Создаём объект. Присваиваем спрайт при создании, через событие Создание.
  • Добавляем 4 события нажатия на клавишу (W, A, S, D или на стрелки). В этом же событии добавляем действия движения (Move Fixed) и указываем направление и скорость движения. А также добавляем смену спрайта (Change sprite) и скорость его анимации.

Ниже в формате .Gif наглядно представлены все пункты:

(Листайте вправо)

2. Самая важная часть - остановка персонажа. Ведь он должен не только двигаться, но и останавливаться, верно?

  • Добавляем событие Клавиатура -> No key.
  • Добавляем действие Test variable - оно нужно для проверки статуса переменной. В Гейм Мейкере есть стандартная переменная sprite_index - она хранит в себе значение спрайта у объекта. В строку variable вводим ту самую переменную "sprite_index". А в строку value вводим проверяемый спрайт (spr_up_player, spr_left_player, spr_down_player, spr_right_player - возможны и другие названия, в зависимости от того, какие ставили вы).
  • Далее создаем начало и конец блока (Start of a block и End of a block). Между ними заключаются действия, выполняемые если события соответствуют условиям, прописанным в Test variable.
  • Действия заключенные между блоками: смена спрайта и остановка движения. Спрайт меняем на заранее заготовленный - где персонаж стоит к нам передом/боком/задом, в зависимости от того, что мы написали в Test variable (если мы там проверяли была ли анимация хождения вправо, то и спрайт заменяется соответственно на тот, где персонаж стоит повернувшись вправо). А движение (точнее его отсутствие) мы по стандарту выставляем через действие Move Fixed.
  • Затем ставим блок Else, что означает "Иначе". То есть если события происходящие в игре не подошли под условие прописанное в Test Variable, то будут проверяться уже другие условия.
  • И дальше делаем всё то же самое, только подставляем уже другие направления спрайтов. И да, в самом конце, уже добавлять Else не нужно.

Ниже в формате .Gif наглядно представлены все пункты:

Говоря человеческим языком, это выглядит примерно вот так:

Объект - Персонаж.

Событие - Когда клавиши не нажаты:

Действие:

Происходит проверка текущего спрайта, является ли он спрайтом движения вверх? Если да, то выполняется блок - смена спрайта на стоящего повернутого вверх и остановки движения. Иначе:

Происходит проверка текущего спрайта, является ли он спрайтом движения вниз? Если да, то выполняется блок - смены спрайта на стоящего повернутого вниз и остановки движения. Иначе:

Происходит проверка текущего спрайта, является ли он спрайтом движения влево? Если да, то выполняется блок - смены спрайта на стоящего повернутого влево и остановки движения. Иначе:

Происходит проверка текущего спрайта, является ли он спрайтом движения вправо? Если да, то выполняется блок - смены спрайта на стоящего повернутого вправо и остановки движения. Иначе:

Остановка персонажа в том же положении, куда он шёл - работает!
Остановка персонажа в том же положении, куда он шёл - работает!

Я особо не заморачивался с тем, чтобы у персонажа была анимация при остановке, но вы можете сделать всё что захотите! (например небольшие движения/подёргивания персонажа, моргание глазами, различные эффекты и частицы и мн. др.)

Вот, урок подошёл к концу.

Предыдущий урок (Урок №4)

Следующий урок (Урок №6) (скоро выйдет!)

Спасибо, что дочитали статью до конца!

Обязательно подписывайтесь на канал!