Найти тему
Игровой движок Godot engine

№104. Практика. Управление танком в игре с видом сверху. Часть №5. Урон.

В этой части допишем логику нанесения урона вражеским пушкам.

Начнем с того, что добавим пушке бар жизни.
Для удобства и скорости сделаем его при помощи ноды
ProgressBar.
Добавляем бар под ноду
Area, и сразу к этой ноде подключаем скрипт.

-2

Скрипт будет содержать в себе функцию, которая при запуске будет считать количество урона через вычитание из переменной life. И если life меньше 0 , вся наша пушка будет взрываться и исчезать с экрана.

-3

Так как Area находится внутри структуры пушки, то для удаления всей конструкции мы обращаемся к get_parent().
Поднявшись еще выше, в главную сцену через
get_parent(). get_parent(). мы вызываем функцию bexplosion() которая нарисует большой взрыв на том месте, где была пушка.

Функция bexplosion() находящаяся в скрипе main_scene
Функция bexplosion() находящаяся в скрипе main_scene

Вызываться функция life() у нас будет из скрипта снаряда танка.
Для этого пришлось немного исправить логику определения коллизий.
Так как при коллизии мы запускали луп, то иногда, по непонятным для меня причинам этот луп срабатывал
дважды.
И соответственно происходило двойное вычитание урона.
Поэтому я упростил это условие до простой логики : если столкновение было в принципе ,то просто единожды считаем коллизию по индексу == 0.

фрагмент скрипта снаряда пушки
фрагмент скрипта снаряда пушки

После этого можно проверить всё на работоспособность.

-6

На этом пожалуй всё.

Если у вас остались вопросы — пишите в чат, в обсуждения, или дискорд сервер. Все ссылки есть в шапке канала.
Удачи !