Усиления
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 45 из 50.
Задание
СреднеУсиления. Сохраните всё из предыдущих уроков. На арене лежат сердце и щит, а префабы Heart и Shield готовы к появлению после волн. Всё, что герой может подобрать, реализует один интерфейс, поэтому герою не нужно знать о разновидностях предметов.
IPickupобъявляет один метод:void Collect(Hero hero);.Heartреализует его, используяamount(2), заданное в Inspector: лечит героя наamountи уничтожает себя.Shieldреализует его, используяduration(5), заданное в Inspector: защищает героя от каждого удара в течениеdurationсекунд и уничтожает себя.- В
Heroдобавляютсяpublic void Heal(int amount), который увеличивает здоровье, но не вышеmaxHealth, и выводит здоровье в журнал, как и при получении удара; павшего героя нельзя исцелить. Также добавляетсяpublic void Protect(float seconds), который защищает героя от ударов до момента черезsecondsсекунд, подобно тому, как при получении удара действуетsafeTime. Кроме того, добавляетсяOnTriggerEnter: если у объекта, с которым соприкоснулся герой, естьIPickup, герой вызывает у негоCollect(this). CharacterController получает сообщения о триггерах и без Rigidbody. - В каждую
Waveдобавляетсяpublic GameObject reward. Inspector не может отображать поле интерфейсного типа, поэтому в поле хранится префаб как GameObject. Когда волна побеждена, перед перерывом спавнер появляется награду этой волны, если она есть, в своей позиции посреди арены. В ресурсе для волны 1 задано Heart, а для волны 2 — Shield.
Нажми Play, зачисти волну и подбери награду, затем нажми Check.
Попробуйте сами
// В одном из следующих уроков этот интерфейс будет дополнен: он охватывает всё, что герой может подобрать.
public interface IPickup
{
}
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыСовместная работа компонентовПовторение: модульная турель4Сериализованные данные
Сериализуемые классыСписки в InspectorПеречисления в InspectorПовторение: таблица лута2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействия5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиВолны как данныеПовторение: база предметов