Наносим урон всему
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 43 из 50.
Задание
СреднеТеперь бой идет в обе стороны. Сохрани всё из предыдущих уроков. Враги больше не помечены тегами: взмах находит то, чему может нанести урон, через интерфейс, а враги наносят урон герою через тот же интерфейс.
IDamageableобъявляет один метод:void TakeDamage(int amount);.Enemyреализует его. У него естьhealth,damageиattackEvery, задаваемые в Inspector (у grunt — 2, 1 и 1; у dasher — 1, 2 и 1).TakeDamageвычитаетamountизhealthи уничтожает врага, если здоровье становится равным 0 или меньше. ВStartсохрани также ссылку наIDamageableгероя. Каждый кадр, когда герой находится на расстоянии не более 1.2 единиц, вызывай егоTakeDamage(damage)не чаще одного раза вattackEveryсекунд.Heroреализует этот интерфейс. В Inspector задаютсяswingDamage(1),maxHealth(5) иsafeTime(1), а значениеhealthпри запуске вAwakeустанавливается равнымmaxHealth. При попадании изhealthвычитаетсяamount, здоровье выводится в журнал какHero HP: 4, а герой защищен от последующих попаданий в течениеsafeTimeсекунд. При 0 здоровья выведи в журналThe hero fallsи выключи скрипт Hero (enabled = false). Упавший герой игнорирует попадания.- Взмах больше не проверяет теги и ничего не уничтожает: он вызывает
TakeDamage(swingDamage)у всего, что находится в радиусе досягаемости и перед героем и имеет интерфейсIDamageable.
Нажми Play и сразись, затем нажми Check.
Попробуйте сами
// В одном из следующих уроков здесь появится содержимое: всё, что может получить урон.
public interface IDamageable
{
}
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыСовместная работа компонентовПовторение: модульная турель4Сериализованные данные
Сериализуемые классыСписки в InspectorПеречисления в InspectorПовторение: таблица лута2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействия5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиВолны как данныеПовторение: база предметов