Четверг, 14 Ноября 2024, 21:43

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Изменение ширины полосы здоровья по значению переменной
Rikstone26Дата: Среда, 08 Января 2014, 22:01 | Сообщение # 1
частый гость
Сейчас нет на сайте
Есть спрайты:
1. Анимированный персонаж
2.Полоса здоровья ширина которой равна ста
3.Спрайт врага
Есть 3 объекта:
1.Player(игрок)
2.HeaBar(полоса здоровья)
3.Enemy(враг)
Есть переменная:
1.global.HP=100(здоровье; в create у Player)
Нужно:
Сделать так, чтобы при соприкосновении с врагом полоса здоровья изменяла свою ширину, постепенно сводясь к нулю.
Соответственно если global.HP=0, то и ширина HeaBar=0, комната перезагружается.
Переменная находится "в игроке", но объект здоровья-отдельный объект, то есть игрок сталкивается с противником, переменная(в create Player) изменяет своё значение на -10, спрайт отдельного объекта, полосы здоровья, уменьшается. Да я знаю, что это ресурсозатратно, но иначе я сделать не могу(причину не скажу tongue )
Что-то, когда-то я СЛЫШАЛ, что вроде бы нужно использовать "Xcale", но инфромации, по поводу этого, я не нашёл happy
Quad69Дата: Среда, 08 Января 2014, 22:29 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Цитата Rikstone26 ()
Соответственно если global.HP=0, то и ширина HeaBar=0, комната перезагружается.

Ширина = global.HP
if global.HP=0
{
room_restart();
}
Как-то так
Rikstone26Дата: Среда, 08 Января 2014, 22:36 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата maksim1221232 ()
if global.HP=0
{
room_restart();
}

Это-то я знаю, но "Ширина"... вот это для меня, не понятно. Я просто не знаю какая это функция, как она пишется и.т.д.
Quad69Дата: Среда, 08 Января 2014, 23:40 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Может сделать так:
нарисовать полоску здоровья шириной 1 px (Высота может быть любой)
и код:
Код

xcale = global.HP


P.S А чем встроенная полоска здоровья не угодила?
Rikstone26Дата: Среда, 08 Января 2014, 23:54 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата maksim1221232 ()
Может сделать так:
нарисовать полоску здоровья шириной 1 px (Высота может быть любой)
и код:
Код

xcale = global.HP

Код вставлять в step? Я хочу нарисовать свою полоску...
Quad69Дата: Четверг, 09 Января 2014, 00:12 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Цитата Rikstone26 ()
Код вставлять в step?

Да

Цитата Rikstone26 ()
Я хочу нарисовать свою полоску...

Попробуй в событии рисования путём растяжения изображения рисовать
Rikstone26Дата: Четверг, 09 Января 2014, 00:14 | Сообщение # 7
частый гость
Сейчас нет на сайте
Спасибо
rgs_hakerДата: Четверг, 09 Января 2014, 01:40 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Rikstone26, может это подойдет
Этот способ позволяет отображать жизни в виде спрайта. Чем меньше жизней, тем меньшая часть картинки отображается. Эффект получается примерно как в Diablo II.

Для начала создадим спрайт, который будет показывать жизни. Для данного примера создаем с размером 80х80. Размер спрайта важен, так как он будет использоваться в коде. Далее создаем объект и в событии CREATE прописываем:
maxlife = 100 // максимальное значение
minlife = 0 // минимальное значение
life = 100 // стартовое значение жизней

В событии STEP сразу пропишем для просмотра:
if keyboard_check(vk_down) then life -= 5
if keyboard_check(vk_up) then life += 5

Теперь в событии рисования вставляем код:
Как всегда сначала ограничиваем жизни по указанным параметрам.

if life < minlife then life = minlife
if life > maxlife then life = maxlife

Далее рисуем сам спрайт.

draw_sprite_part (spr_sprite, 0, 0, 80, 80, - ((life/maxlife)*80), 30, 467);

/* спрайт(spr_sprite), подкартинка(0),лево(0),верх(80),
ширина(80),высота ( -(жизни/макс жизней)*высота картинки ),x, y) */

Чтоб лучше понять этот код попробуйте над ним поэкспериментировать.


_____
Rikstone26Дата: Четверг, 09 Января 2014, 13:35 | Сообщение # 9
частый гость
Сейчас нет на сайте
Сегодня попробую, если сработает то плюс тебе в репу biggrin
Спасибо happy
  • Страница 1 из 1
  • 1
Поиск:

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