HealthBars - Форум Игроделов
Пн, 06 Май 2024, 15:31 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » GAME MAKER » МАНУАЛЫ И УРОКИ » HealthBars
HealthBars
MrWolfДата: Чт, 29 Июл 2010, 02:04 | Сообщение # 1
[color=#fff600]
 
Сообщений: 211
Награды: 4
Репутация: 131
Статус: Offline
Данная статья поможет вам добавить в свою игру свою шкалу здоровья. Данный способ может пригодиться для отображения нескольких шкал в игре (жизни, манна, опыт). К тому же стандартный хеалсбар имеет несколько недостатков.

1-й пример.

Отображение стандартной горизонтальной полосы здоровья.
Нужно создать один объект, который будет отвечать за отображение.
Далее в событии CREATE добавить код:

Code
bar_x = 1 // положение по x (верхняя левая точка)
bar_y = 1 // положение по Y (верхняя левая точка)
bar_wight = 100 // ширина
bar_hight = 20 // высота
value_min = 0 // минимальное значение жизней
value_max = 100 // максимальное значение жизней
heals = 100 // начальное значение жизней

Здесь мы определили параметры полоски жизней. Параметры value_max и heals, скорее всего, будут изменяться в игре.

Далее само событие рисования (Draw event):

Сначала устанавливаем ограничения, что бы жизни не выходили за рамки min и max.

Code
// жизней не может быть меньше минимального значения
if (heals > value_max) heals=value_max   

// жизней не может быть больше максимального значения
if (heals < value_min) heals=value_min

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

Code
// прорисовываем рамку
draw_set_color(c_aqua)
draw_rectangle (bar_x, bar_y, bar_x + bar_wight, bar_y + bar_hight, true)
// прорисовываем фон
draw_set_color(c_dkgray)
draw_rectangle(bar_x + 1, bar_y + 1, bar_x + bar_wight-1, bar_y + bar_hight-1, false)

В переменную W записываем значение жизней. Мы всю ширину полосы делим на максимальное значение жизней и умножаем на само количество жизней. Тем самым получим значение для отрисовки.

Code
// вычисляем длину жизней, чтоб перевести в шкалу
w = bar_wight / value_max * heals

А это сам процесс отрисовки самой важной части полоски. Устанавливаем цвет и рисуем прямоугольник в начале полоски и с длиной W.

Code
draw_set_color(c_red) // цвет отображения шкалы жизней
// рисуем прямоугольник равный кол-ву жизней
draw_rectangle( bar_x, bar_y, bar_x+w, bar_y + bar_hight, false)

// тоже самое только прорисовываем рамку
draw_set_color(c_aqua)
draw_rectangle(bar_x, bar_y, bar_x+w, bar_y + bar_hight, true)

2-й пример.

Теперь нарисуем такую же полоску но она будет отображать значение жизней по вертикали. Также создаем объект и в событии CREATE прописываем:

Code
// позиция нижней левой точки
bar_x = 1
bar_y = 160
// ширина и высота соответственно
bar_wight = 20
bar_hight = 100
// мин, макс, значение (жизни)
heals_min = 0
heals_max = 100
heals = 100

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

Code
// ограничение кол-ва жизней по мин и макс
if (heals > heals_max) heals = heals_max
if (heals < heals_min) heals = heals_min

// рамка
draw_set_color(c_aqua)
draw_rectangle (bar_x, bar_y, bar_x + bar_wight, bar_y - bar_hight, true )
// фон
draw_set_color(c_dkgray)
draw_rectangle(bar_x+ 1, bar_y - 1, bar_x + bar_wight-1, bar_y - bar_hight+1, false)

На этот раз делим не ширину, а высоту.

Code
w = bar_hight / heals_max * heals

И прописываем отображение полоски с немного другими параметрами.

Code
// жизни
draw_set_color(c_red)
draw_rectangle( bar_x, bar_y - w, bar_x + bar_wight, bar_y, false )
// рамка
draw_set_color(c_aqua)
draw_rectangle( bar_x, bar_y - w , bar_x + bar_wight, bar_y, true )

Для просмотра эффекта в событии STEP пропишите что-то в этом стиле:

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

if keyboard_check (vk_down) then life -= 5

if keyboard_check (vk_up) then life += 5

В этом коде стоит заменить имена переменных на те, которые прописали вы.

3-й способ.

Этот способ позволяет отображать жизни в виде спрайта. Чем меньше жизней, тем меньшая часть картинки отображается. Эффект получается примерно как в Diablo II.

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

Code
maxlife = 100 // максимальное значение
minlife = 0 // минимальное значение
life = 100 // стартовое значение жизней

В событии STEP сразу пропишем для просмотра:

Code
if keyboard_check(vk_down) then life -= 5
if keyboard_check(vk_up) then life += 5

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

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

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

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

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

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

------------------------------------------------------------------------------------------------------------------- ---------

Версия: 1.0

Автор: ***DeMoN***

 
СообщениеДанная статья поможет вам добавить в свою игру свою шкалу здоровья. Данный способ может пригодиться для отображения нескольких шкал в игре (жизни, манна, опыт). К тому же стандартный хеалсбар имеет несколько недостатков.

1-й пример.

Отображение стандартной горизонтальной полосы здоровья.
Нужно создать один объект, который будет отвечать за отображение.
Далее в событии CREATE добавить код:

Code
bar_x = 1 // положение по x (верхняя левая точка)
bar_y = 1 // положение по Y (верхняя левая точка)
bar_wight = 100 // ширина
bar_hight = 20 // высота
value_min = 0 // минимальное значение жизней
value_max = 100 // максимальное значение жизней
heals = 100 // начальное значение жизней

Здесь мы определили параметры полоски жизней. Параметры value_max и heals, скорее всего, будут изменяться в игре.

Далее само событие рисования (Draw event):

Сначала устанавливаем ограничения, что бы жизни не выходили за рамки min и max.

Code
// жизней не может быть меньше минимального значения
if (heals > value_max) heals=value_max   

// жизней не может быть больше максимального значения
if (heals < value_min) heals=value_min

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

Code
// прорисовываем рамку
draw_set_color(c_aqua)
draw_rectangle (bar_x, bar_y, bar_x + bar_wight, bar_y + bar_hight, true)
// прорисовываем фон
draw_set_color(c_dkgray)
draw_rectangle(bar_x + 1, bar_y + 1, bar_x + bar_wight-1, bar_y + bar_hight-1, false)

В переменную W записываем значение жизней. Мы всю ширину полосы делим на максимальное значение жизней и умножаем на само количество жизней. Тем самым получим значение для отрисовки.

Code
// вычисляем длину жизней, чтоб перевести в шкалу
w = bar_wight / value_max * heals

А это сам процесс отрисовки самой важной части полоски. Устанавливаем цвет и рисуем прямоугольник в начале полоски и с длиной W.

Code
draw_set_color(c_red) // цвет отображения шкалы жизней
// рисуем прямоугольник равный кол-ву жизней
draw_rectangle( bar_x, bar_y, bar_x+w, bar_y + bar_hight, false)

// тоже самое только прорисовываем рамку
draw_set_color(c_aqua)
draw_rectangle(bar_x, bar_y, bar_x+w, bar_y + bar_hight, true)

2-й пример.

Теперь нарисуем такую же полоску но она будет отображать значение жизней по вертикали. Также создаем объект и в событии CREATE прописываем:

Code
// позиция нижней левой точки
bar_x = 1
bar_y = 160
// ширина и высота соответственно
bar_wight = 20
bar_hight = 100
// мин, макс, значение (жизни)
heals_min = 0
heals_max = 100
heals = 100

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

Code
// ограничение кол-ва жизней по мин и макс
if (heals > heals_max) heals = heals_max
if (heals < heals_min) heals = heals_min

// рамка
draw_set_color(c_aqua)
draw_rectangle (bar_x, bar_y, bar_x + bar_wight, bar_y - bar_hight, true )
// фон
draw_set_color(c_dkgray)
draw_rectangle(bar_x+ 1, bar_y - 1, bar_x + bar_wight-1, bar_y - bar_hight+1, false)

На этот раз делим не ширину, а высоту.

Code
w = bar_hight / heals_max * heals

И прописываем отображение полоски с немного другими параметрами.

Code
// жизни
draw_set_color(c_red)
draw_rectangle( bar_x, bar_y - w, bar_x + bar_wight, bar_y, false )
// рамка
draw_set_color(c_aqua)
draw_rectangle( bar_x, bar_y - w , bar_x + bar_wight, bar_y, true )

Для просмотра эффекта в событии STEP пропишите что-то в этом стиле:

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

if keyboard_check (vk_down) then life -= 5

if keyboard_check (vk_up) then life += 5

В этом коде стоит заменить имена переменных на те, которые прописали вы.

3-й способ.

Этот способ позволяет отображать жизни в виде спрайта. Чем меньше жизней, тем меньшая часть картинки отображается. Эффект получается примерно как в Diablo II.

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

Code
maxlife = 100 // максимальное значение
minlife = 0 // минимальное значение
life = 100 // стартовое значение жизней

В событии STEP сразу пропишем для просмотра:

Code
if keyboard_check(vk_down) then life -= 5
if keyboard_check(vk_up) then life += 5

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

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

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

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

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

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

------------------------------------------------------------------------------------------------------------------- ---------

Версия: 1.0

Автор: ***DeMoN***


Автор - MrWolf
Дата добавления - 29 Июл 2010 в 02:04
Форум Игроделов » GAME MAKER » МАНУАЛЫ И УРОКИ » HealthBars
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024