Среда, 13 Ноября 2024, 11:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Полоса здоровья для мобов
GrannerДата: Вторник, 26 Июля 2016, 17:32 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Возникла необходимость в мини-хелсбарах мобов в следующих условиях:
- мобы двигаются, поэтому хелсбар должен следовать за ними (с draw_sprite тут в принципе все понятно);
- создание хелсбара для каждого экземпляра объекта (не будешь же делать 20 полос для 20 мышей, к примеру);
- создание хелсбара только тогда, когда здоровье моба меньше 100% (чтобы не было мельтешения на экране, когда его не нужно);

Каким путем решаются такие задачи? Есть ли типовые решения или в хотя бы какую сторону копать?
Уточняю, статические хелсбары, как для главного героя, нежелательны (я хотел оставить их для боссов). Статьи
[url=http://gcup.ru/forum/36-0-1-0-10-1-[%D0%B7%D0%B4%D0%BE%D1%80%D0%BE%D0%B2%D1%8C%D1%8F]]по хелсбарам[/url] - почитал :)


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
vampir0305Дата: Вторник, 26 Июля 2016, 20:36 | Сообщение # 2
Unity C# Programmer
Сейчас нет на сайте
Решение сразу для всех трёх условий.
В этом примере создание хелсбара происходит когда у моба отнимается хп, и если спустя 3 секунды урон ему не наносился хелсбар пропадает.
Итак, в объекте моба в событии Create пишем:
Код
hp = 100 //Хп моба
showdamage = 0 //Виден ли хелсбар 0 - нет

В событии Draw
Код
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha); //Отрисовка моба

if (showdamage = 1) //Если хелсбар виден, то рисуем его
{
draw_sprite(spr_healthbar_enemy, 0, x - 32, y - 32)  //Рисуем фон
draw_sprite_part(spr_healthbar_enemy, 1, 0, 0, sprite_get_width(spr_healthbar_enemy) * (hp / 100//Делим на максимальное кол-во жизней),
sprite_get_height(spr_healthbar_enemy), x - 32, y - 32) //Рисуем жизни на фоне
}

Теперь в событие Столкновения с пулей
Код
if (showdamage = 0) //Если хелсбар не виден
{
    showdamage = 1 //Показывем хелсбар
    alarm[0] = room_speed*3 //Через 3 секунды запустится таймер
}
hp-=20 //Отнимаем 20 хп

В Аларм 0
Код
showdamage = 0 //Убираем хелсбар


Красочная сюжетно-ориентированная игра-головоломка

Сообщение отредактировал vampir0305 - Вторник, 26 Июля 2016, 20:38
GrannerДата: Вторник, 26 Июля 2016, 21:36 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Спасибо, vampir0305. За идею с алярмом - особенно :)
Пока не проверил в ГМ, но возникло чисто теоретически...
Цитата vampir0305 ()
draw_sprite(spr_healthbar_enemy, 0, x - 32, y - 32)

А что с координатами? Как хелсбар понимает, что это хп именно того моба, по которому ты стреляешь, а не соседнего, в нескольких пикселях поодаль?


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
vampir0305Дата: Среда, 27 Июля 2016, 07:25 | Сообщение # 4
Unity C# Programmer
Сейчас нет на сайте
Granner, Причём тут соседние мобы. Ты просто когда расставляешь мобов(экземпляров) получается у каждого экземпляра свой хелсбар. Координаты тут не при чём.

Красочная сюжетно-ориентированная игра-головоломка
GrannerДата: Среда, 27 Июля 2016, 12:32 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Проверил. Спасибо, работает. Буду теперь адаптировать под свою систему.

Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг