Как реализовать растения в игре типа Растения против Зомби? Юнити
Я хочу попытаться сделать игру по типу Растения против Зомби. Но не понимаю, как лучше и правильнее всего реализовать растения. В оригинальной игре их порядка 50 с лишним штук - мне столько не надо, нужно штук 10-15. Каким образом лучше это реализовать?
Может сделать общий класс Plant, в котором создать переменные для названия растения, его урона, здоровья, спрайта и т.д., а потом для каждого объекта **создавать экземпляр класса, указывая для каждого растения свои переменные? Но что сделать потом? Я создам префаб растения и какой скрипт в таком случае мне на него вешать?
Или можно для каждого вида растения прописать свой скрипт, со своими переменными. Каждому растению прописать свое поведение (подсолнух - дает солнце, другие растения - стреляют, мину - взрываются, когда наступает зомби), а потом просто вешать скрипт, например, подсолнуха на префаб подсолнуха. Но в таком случае мне придется создавать много скриптов: по 1 для каждого растения. Мне кажется это неправильно.
Или можно... *сделать еще как-то. *
P.S. Пожалуйста, не надо писать, что "Вот еще один думает, что сможет реализовать игру, которую несколько месяцев/лет делала команда профессиональных разработчиков.", лучше просто пройдите мимо этого вопроса, потому что: я НЕ буду делать точную копию, я НЕ буду куда-либо выкладывать эту игру, я НЕ собираюсь вообще ее куда-то девать, я просто хочу... проверить свои силы что ли... и попытаться сделать что-то подобное. Может выучить какие-то новые вещи и вдруг я встрял на таком вопросе. Надеюсь на помощь, заранее спасибо :)))
Ответы (1 шт):
Вам придётся написать больше одного класса, но не для каждого растения.
Скрипт GameUnit просто содержит поле с префабом скина и ссылкой на скрипт Skin, объекта который он создаст из префаба, поле номера линии, количеством жизней, максимальных жизней, и функций получения урона и функцией смерти.
Ответственность класса Plant (наследуется от GameUnit) проста: цена, функция построения и поле номера клетки.
Skin с функциями проиграть rise, idle, walk, attack, dead настроенные под скин и для растений и для зомбаков.
PlantBehaviour просто находит класс Plant и хранит на него ссылку, для получения ссылки к скину и тайлу(линия и клетка).
AttackBehaviour умеющий палить врагов на своей линии что заставляет стрелять наследуется от PlantBehaviour.
Растения у которых какие-то необыные атаки (например атакуют врагов на всех линиях или соседних) имеют свой скрипт наследуемый от AttackBehaviour и меняют фунции палева врага или спавна снаряда.
У добытчиков скрипт HarvestBehaviour, наследуемое всё от тогоже PlantBehaviour.
У мин свой скрипт, а стенкам поведение вовсе не нужно.
Zombie тоже наследуются от GameUnit. Реализует атаку другого GameUnit.
У зомбаков свои скрипты передвижения как поведения растений и дополнительных фич типа щита и т.д.
У снарядов тоже могут быть разные скрипты.
Что-то примерно так.