должны действовать ограниченное количество времени и активируемые Hero с помощью предметов?
На самом примитивном уровне (2 варианта):
Вариант 1.
Нужный компонент (условно, PowerUpSuperSpeed) всегда висит на Hero и активируется в момент подъема предмета соответствующего типа (SuperSpeed). По истечении времени способность деактивируется, компонент продолжает висеть на Hero дальше. Минус: при большом количестве запланированных типах PowerUp'ов на Hero будет каша из компонентов.
Вариант 2.
Компонент PowerUpSuperSpeed НЕ висит на игроке. В момент подъема предмета, предмет с помощью AddComponent добавляет Hero компонент нужного типа, по истечении времени компонент PowerUpSuperSpeed самоудаляется с Hero. Насколько это вообще адекватный подход?
Почему каша, если у тебя всё будет запланировано с именами? Например для бега можно просто прибавлять кф к скорости без компонентов. Или создать enum с бустами и переключать их по мере того как герой поднимает эти предметы
Это будет не расширяемое решение, в конце концов код превратится в кашу
ок, а что-то вроде "Взрыв вокруг игрока", "Ослепление врагов" - это уже никуда не пихнешь в стандартные компоненты игрок/врага (ходьба, прыжок и т.п.). Будет куча костылей в коде.
Не надо делать как компоненты
А как надо?
Просто класс, который будет реализовать какой то интерфейс
через интерфейс и реализации сделай, что у тебя есть IPowerUp от него наследуется SuperSpeed и ты когда его подимаешь, его инстанс кладется в Hero и в Update вызывается Execute пока он не закончится
Обсуждают сегодня