Оглавление
1. Пусть пули имеют разный урон
2. У врагов разный объем крови
3. Измените логику «BP_TowerBase».
4. Выпущенные пули наносят урон противнику
Эффект
шаг
1. Пусть пули имеют разный урон
Чтобы каждая пуля имела разное значение урона, откройте «TotalBulletsCategory» (родительский класс всех пуль), создайте новую переменную с плавающей запятой с именем «DamageValue», которая представляет значение урона пули, а значение по умолчанию установлено на 10.
Когда пуля сталкивается с врагом, применяется это значение урона.
Откройте «TowerBaseBullet_Child» и измените «DamageValue» в родительском классе, чтобы разные пули могли иметь разные значения урона.
2. У врагов разный объем крови
Откройте «TotalEnemyCategory», создайте новую переменную с плавающей запятой с именем «HealthyValue», которая используется для представления текущего значения здоровья врага, и установите значение по умолчанию на 100.
Точно так же мы можем изменить размер «HealthyValue» в подклассе «Enemy1», чтобы у каждого врага было разное значение здоровья.
3. Измените логику «BP_TowerBase».
После запуска события выполняйте событие «DetectEnemise» каждые 1 с.
Событие "DetectEnemise" выглядит следующим образом
При обнаружении врага обнаружение останавливается, и выполнение события таймера останавливается, если враг не обнаружен, противник обнаруживается повторно.
Обнаружение необходимо перезапустить, когда переменная «ChoosedEnemy» недействительна.
4. Выпущенные пули наносят урон противнику
Добавьте следующий узел в «TotalEnemyCategory», настройте смоделированную физику, чтобы имитировать эффект падения врага, когда его HP возвращается к 0, а затем задержите 2 секунды, чтобы уничтожить вражеского Актера.
Здесь вам нужно установить пресет столкновения в компоненте Mesh на пользовательский, а затем игнорировать столкновение Пешки, иначе враг будет подброшен в воздух.
Запустите игру в это время, и вы обнаружите, что турель продолжает стрелять пулями в мертвого врага после того, как враг умирает.Чтобы избежать этого явления, нам нужно добавить логическую переменную в «TotalEnemyCategory», чтобы указать, мертв ли враг.
Когда здоровье врага достигает 0, установите для параметра «isDead» значение true.
Открываем "BP_TowerBase", добавляем суждение о смерти врага, если смерти нет, продолжаем прежнюю логику, и перезапускаем детекцию после смерти
В этот момент запустите игру, как показано в начале статьи.