Вот так выглядит игра. Просто и скромно. Фичи:
1 - Генерация карты при загрузке уровня. Вообще, карта собирается по словарю. Поэтому массив с объектами с карты можно хранить как угодно. Хоть в текстовом документе. Но в моём случае карта заполняется рандомными объектами.
2 - 6 видов объектов на карте: кирпичные блоки (можно разрушить, но нельзя проехать), бетонные блоки (ни разрушить, не проехать), вода (не разрушается, по ней нельзя ездить, но через неё можно стрелять), кусты/трава (не разрушаемые объекты, в которых можно прятаться. Турельки вас в кустах не видят и перестают стрелять. Из кустов можно успешно вести огонь). Плюс два вида турелек.
3 - Два вида турелей. Одни - направленные и стреляют строго прямо. Вторые - направляют башню на игрока и ведут прицельный огонь.
4 - Система бонусов. Рандомно выпадает 3 вида бонусов: взрывающий окружающие турели, увеличивающий скорость танка и увеличивающий скорострельность танка.
Что касается самого танка - он умеет крутить башней и стрелять в сторону курсора.
Управление: WASD или стрелки - движение танка.
Мышь - направление стрельбы. Стреляем на левую клавишу мыши.
Кстати. На главном экране (сцена Main) есть белый квадрат. Это как бы кнопка "Play".
Внимание! Теги! Если не дать объектам теги - вы не сможете никого убить и ничего разрушить. А поскольку стрелялки в принципе не для пацифистов - давайте исправлять.
Тег Block - требуется всем не разрушаемым объектам. Обратите внимание, что на сцене имеется объект floor и в нём четыре куба. Это ненавистные всеми игроками невидимые стены, которые в моём случае не только не дают танку свалиться с платформы, но и уничтожают объекты пуль, чтобы они не захламляли сцену и не занимали память.
Тег Bullet - вешаем на префаб Bullet (в папке Resources).
Тег Turret - вешаем на оба вида турелей (всё в той же папке).
Тег Grass - вешаем на одноимённый префаб (угадайте, где?).
И напоследок поясню назначение скриптов.
Класс AudioManager - подписывается на все события, при которых должны воспроизводиться звуки. И, соответственно, когда это событие происходит - воспроизводят соответствующий звук.
Класс BonusController - вращает объект (да, лень было возиться с анимацией, реализовал вращение из кода) и при столкновении с объектом "Player" - вызывает соответствующее событие.
Класс BonusSystem - рандомно создаёт бонусы и раскидывает их по карте.
Класс BulletController - рассчитывает баллистику толкает снаряд вперёд.
Класс DestroyableObj - даёт объектам здоровье и возможность умирать.
Класс GameManager - управляет игровым процессом.
Класс MainScreenManager - нужен исключительно для запуска игры.
Класс MapGenerator - отвечает за сборку карты. В моём случае - её генерирует.
Класс Messenger - это система событий.
Классы TankController и TurretController - управляют танком и турельками, соответственно.
На этом всё. Если будут вопросы - пишите в комментариях. Постараюсь ответить.
Ссылка на исходники: bitbucket.org/TonyKOT/tanks-demo
Подписывайтесь, чтобы не пропустить что нибудь новенькое. И не забывайте ставить плюсы, это лучшая награда для автора. Спасибо!