Не отображается Health бар скелета
|
|
AntonioRS | Дата: Воскресенье, 19 Июля 2020, 22:48 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Есть скелет. Есть код Healthbar'a, но когда я рисую хелтбар через draw в скелете, то сам скелет исчезает. Я хотел сделать отдельный объект который преследует скелета и отрисовывает Хелт бар постоянно, но скелетов 5 а объект я сам сделать не умею...
Состоим в Диванных войсках
|
|
| |
Supr_maks | Дата: Понедельник, 20 Июля 2020, 06:00 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Пропиши в драв скелета первой строчкой draw_self() и он снова будет виден
У всех в душе пустота...
Сообщение отредактировал Supr_maks - Понедельник, 20 Июля 2020, 06:00 |
|
| |
MagicHero | Дата: Понедельник, 20 Июля 2020, 10:03 | Сообщение # 3 |
участник
Сейчас нет на сайте
| По поводу Healthbar то если в будущем начнешь оптимизировать игру то советую отказаться от этой функции т.к. эта отрисовка увеличивает свопы текстурных страниц. Лучше сразу рисуй хелбар через draw текстурой которая находится на той же текстурной странице что и текстуры скелета. draw_sprite_ext(s_health_line,0,x,y,health,1,0,-1,1); где s_health_line - текстура линии здоровья а health - количество здоровья но в отличие от фукции а Healthbar это значение не от 0 до 100 а от 0 до 1 т.е. нужно делить еще на 100 и лучше через round ограничить значение знаков после запятой на 2 т.е. чтобы значение было типа 0.15 а не 0.1534738475.
Для контроля количества отрисовок и вообще как игра использует железо нужно прописать show_debug_overlay(true); где вверху будут отображаться цифры текстуртных свопов и вершинных пакетов. Это значение должно быть как можно меньше. Например у меня в игре много текстур, их размер порядка 70мб (после ужимания непосредственно в самом кеше, размер становится около 40мб) а количество текстурных страниц 25 (размер 2048х2048) и забиты порой до предела чтобы минимизировать их количество. В игре же значение show_debug_overlay показывает в пределах 10/12 до 20/22 но обычно держится в районе 14/16. При этом стоит учесть что вызов таких функций как draw_set_font(); draw_set_colour(); также увеличивают значения и нужно стараться их выполнять за раз в одном месте.
Сообщение отредактировал MagicHero - Понедельник, 20 Июля 2020, 10:09 |
|
| |
AntonioRS | Дата: Понедельник, 20 Июля 2020, 12:12 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Я сделал Helthbar из спрайта, но скелета всё равно не видно((( Draw_self() не помогает, скелет у меня должен поворачиваться.
Теперь есть баг: https://yapx.ru/v/IQGaL - фото бага
Хпшки на весь экран. А скелета всё равно не видно
код в драв скелета draw_sprite_ext(s_enemy_hp,0,x,y+24,hp,1,0,-1,1);
Состоим в Диванных войсках
|
|
| |
Core | Дата: Понедельник, 20 Июля 2020, 12:39 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| AntonioRS,
Пробуй так:
Код draw_self(); draw_sprite_ext(s_enemy_hp,0,x,y+24,hp,1,0,-1,1);
Тебе же уже писали про draw_self.
Сообщение отредактировал Core - Понедельник, 20 Июля 2020, 12:39 |
|
| |
MagicHero | Дата: Понедельник, 20 Июля 2020, 13:16 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Цитата AntonioRS ( ) Хпшки на весь экран. А скелета всё равно не видно Значит значение hp выходит за диапазон от 0 до 1, выведи отдельно на экран значение hp чтобы в этом убедится и понять что делать чтобы исправить.
draw_self(); нужно писать непосредстванно в draw и от порядока написания зависит глубина, так если сначала будет draw_self(); а затем draw_sprite_ext(s_enemy_hp,0,x,y+24,hp,1,0,-1,1); то если линия здоровья будет перекрывать картинку скелета (если по координатам будет попадать на его спрайт) а если наоборот сначала draw_sprite_ext(s_enemy_hp,0,x,y+24,hp,1,0,-1,1); а потом draw_self(); то линия здоровья будет за скелетом.
Сообщение отредактировал MagicHero - Понедельник, 20 Июля 2020, 13:21 |
|
| |
AntonioRS | Дата: Вторник, 21 Июля 2020, 00:17 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Да Draw_ext работает но, как поделить на 100? я не понимаю(( я пишу round(100/hp) Но хп-шки на весь экран( Помогите пожалуйста
Состоим в Диванных войсках
|
|
| |
MagicHero | Дата: Вторник, 21 Июля 2020, 00:28 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Цитата AntonioRS ( ) Да Draw_ext работает но, как поделить на 100? я не понимаю(( я пишу round(100/hp) Но хп-шки на весь экран( Помогите пожалуйста OMG ты бы сначала почитал что делает round, он округляет до ближайшего целого числа. hp тебе в картинку нужно засунуть в процентах поделенные на 100, т.е. если у тебя остается 45% от текучего значения то hp=0.45; round же нужно применять для округления а именно после того как вычислишь сколько у тебя осталось в % здоровья применяешь hp=round(hp)/100; и в итоге получаешь значение максимум с 2 знаками после запятой. А как найти в процентах сколько осталось здоровья то это простая школьная программа по математике, надеюсь ты учил математику? т.к. без нее в программировании делать нечего.
|
|
| |