Menu
CoddyTech

Усиления

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 45 из 50.

challenge icon

Задание

Средне

Усиления. Сохраните всё из предыдущих уроков. На арене лежат сердце и щит, а префабы 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