Изменение ширины полосы здоровья по значению переменной
|
|
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, спрайт отдельного объекта, полосы здоровья, уменьшается. Да я знаю, что это ресурсозатратно, но иначе я сделать не могу(причину не скажу ) Что-то, когда-то я СЛЫШАЛ, что вроде бы нужно использовать "Xcale", но инфромации, по поводу этого, я не нашёл
|
|
| |
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 (Высота может быть любой) и код:
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 |
частый гость
Сейчас нет на сайте
| Сегодня попробую, если сработает то плюс тебе в репу Спасибо
|
|
| |