Блог ☯

11.03.2017

Как сделать хелсбар? Полоска хипов в game maker - draw_healthbar

Довольно простая тема и по идее она не стоит отдельного видео, однако в последнее время мне часто задают очень базовые вопросы и вопрос "как сделать хелсбар в game maker" мне задавали не один раз.

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

Как сделать хелсбар? Полоска хипов в game maker

Мой схематический рисунок - вот что нам нужно понять в первую очередь. Полоска хипов (маны, опыта...) это просто по сути дела прямоугольник который отрисовывает программа. 

Основной код (синтаксис) в game maker для полоски хипов вот такой: 
draw_healthbar(x1, y1, x2, y2, amount, backcol, mincol, maxcol, direction, showback, showborder);
Штука довольно длинная и может вас пугать, но не пугайтесь, она простая. 

х1 и у1 - это координаты первой точки. Обычно я пишу координаты левого верхнего угла. х2 и у2 - координаты второй точки. Имея две точки через них строится прямоугольник. 

Либо это строится фиксированное, например 0, 0 и 800, 5. В этом случае сверху на экране с разрешением 800 на 600 у нас будет полоска в 5 пикселей. Но это используется редко. 

Чаще мы задаём координаты противников или героя. 

Для этого мы например пишем: 
x1: o_hero.x-25
y1: o_hero.y-25
x2: o_hero.x+25
y2: o_hero.y-30
В этом случае у нас получиться полоска над персонажем (героем) шириной 50 пикселей и высотой 5. 

Идём дальше.

Amount - значение. Что это такое? Там максимум должно быть 100, а минимум 0. При 100 мы закрашиваем всю полоску, при 0 мы ничего не закрашиваем. 

Допустим если у вас в игре у героя 100 жизней и больше 100 быть не может, а при 0 он умирает, то так туда и пишем: global.hero_hp

Если у вас максимум жизней (или маны) зависит например от силы героя, то там нужна формула, но про это я говорил в видео, посмотрите. 

Где вообще стоит писать этот код?

Обычно я пишу в объекте "бог" (god), в draw (рисовать). Если у меня что-то глобальное, то пишу просто в коде. Если нужно например отрисовывать полоски у кучи врагов и нужны их локальные переменные (а не глобальные), тогда можете сделать вот так:


Как сделать хелсбар? Полоска хипов в game maker


Выбирайте отрисовку для конкретного объекта и код для полоски для каждого врага. 

Например в моей игре Space Story хипы врагов рисуются вот так:


Как сделать хелсбар? Полоска хипов в game maker


draw_healthbar(x-25,y-27,x+25,y-31,(hp/hp_max)*100,c_black,c_red,c_red,0,1,1)


Но этот пример для вашей конкретной игры может не подойти! 


Видите, там я беру локальную переменную hp и делю её на максимальные hp, а потом всё это еще умножаю на 100. 

Смотрите дальше. backcol - цвет заднего фона. В случае этой игры у меня он чёрный. Но например на примере ниже - он белый: 

Как сделать хелсбар? Полоска хипов в game maker

Кстати, совсем не обязательно его делать вообще, далее есть специальная штука - showback, вот если она = 1, тогда вы рисуете задний фон. Если она равна 0 - не рисуете. Задний фон нужен не всегда. 

Далее у нас mincol, maxcol. Минимальный цвет и максимальный. 

Минимальный это когда значение ближе к 0, максимальный, когда оно ближе к 100. 

Иногда вы можете сделать например mincol - c_red, maxcol - c_green. 

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

Позже у нас direction - направление отрисовки. 
0 - лево
1 - право
2 - вверх
3 - вниз
Обычно я делаю 0, это классический вариант, но иногда вам могут понадобиться и другие направления. Если что-то рисуется криво или не рисуется, попробуйте поменять направление. Иногда в этом бывает глюк. 

Про  showback я уже сказал, а последнее - showborder. Показывать или нет границу. Это не сильно важно, 1 пиксель по краям хелсбара. 1 - да, 0 - нет. 

На этом всё. Если у вас какие-то вопросы, можете спрашивать в паблике ВК (обсуждения) или в комментах под видео. Видео про то, как сделать хелсбар: