Блог ☯

суббота, 12 августа 2017 г.

Как сделать поворот спрайта или объекта в GameMaker

Для того чтобы повернуть ваш спрайт или объект в Гейм Мейкер Студио (GameMaker: Studio) воспользуйтесь функцией: image_angle

Работает данная функция поворота следующим образом. 

Обычно вам нужно повернуть спрайт в 2D играх с видом сверху, допустим что изначально у нас спрайт ориентирован наверх (угол 0 градусов).

Как сделать поворот спрайта или объекта в GameMaker: Studio

Спрайт из моей игры про танки

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


При этом, если мы в событии (event) создания (create) пишем:

image_angle += 90

То это повернёт спрайт (как следствие и объект) на 90 градусов и он будет уже смотреть направо. У некоторых людей проблемы с пониманием градусов поворота, для наглядности покрутите спрайт отдельно с помощью базовой функции графического редактора:

Как сделать поворот спрайта или объекта в GameMaker: Studio

+90 градусов это поворот направо, если изначально смотрел смотрел наверх

Функция поворота вам пригодиться почти в любой игре, особенно в TDS.

Так-же можете уже в step написать например "image_angle += 1" и это заставить объект и спрайт крутиться, изменяя угол на 1 градус каждый тик.

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

Параметр угла наклона спрайта полезен и например при стрельбе или самое банальное, вам нужно чтобы ваш герой крутился в направлении мышки или прицела.

Для этого мы задаём угол исходя из положения мышки (или чего угодно, например исходя из положения героя, чтобы на него "крутились" враги, направляя свой взор):

Как сделать поворот спрайта или объекта в GameMaker: Studio

Моя игра Lonely Dude

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

Так-же может крутиться башня у танка или что-то еще.

Ствол у меня отдельный объект и записано это вот так (в step - постоянная проверка):

image_angle=point_direction(x,y,mouse_x,mouse_y)

Угол зависит от направления мышки по Х и У. Всё довольно просто. 

Любопытно делать игру где ваш спрайт и объект будет крутится в 4 стороны и в зависимости от этого будет задаваться направление стрельбы.

Про это можете посмотреть моё видео, оно длинное (50 минут), но там я даю один вариантов как можно всё это сделать, видео как раз про танки которые я делаю с нуля:



Да, там довольно кривой метод сделать всё это, но это лишь один из методов и он рабочий.

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

На этом всё. Какие-то вопросы - пишите в комментах или спрашивайте в паблике ВК.

Другие статьи про геймдев и создание игр вы можете найти вот тут:

Так-же хочу вам посоветовать на правах рекламы дружественный блог о разработке игр  (Android, java, Gamedev, Unity3d): http://suvitruf.ru/