Создание 1-го уровня тут: https://dzen.ru/suite/0bdea864-aac0-4b2d-a8c5-b68c436fdb32
2 уровень Часть 1 "Концепция и архитектура" тут https://dzen.ru/a/ZZ1VK3T9hVQpBm5W
2 уровень Часть 2 "Игрок: Стрельба и здоровье" https://dzen.ru/a/ZaPSbIr0BxRnMS-6
3 уровень весь тут https://dzen.ru/a/Zaqjt19FE0q6IfWH
Обратимся к концепции игры и посмотрим на скрин 4-го уровня. Посмотреть можно тут, если кто не помнит... https://dzen.ru/a/ZGJVMZKsTRJ1IRxW
В целом весь уровень - это микс всех ныне существующих противодействий игроку...
Начнем с архитектуры уровня.
Сцена с именем Level_4 у нас уже есть, поэтому создаем сцену Level_5, чтобы было на что ссылаться в финале данного уровня. Закидываем новую сцену в BuildSettings.
Для ускорения процесса открываем сцену 1, копируем все, кроме камеры и названия и кидаем в сцену 4.
Рихтуем архитектуру в соответствии со скрином: кирпичики и платформы. Монетки пока можем не трогать. Должно быть как-то так
Для удобства просмотра в поле Game временно отключаем OutPanel.
Теперь обращаемся ко второму уровню и оттуда копируем в сцену шестеренки.
Убираем лишние, расставляем нужные по местам и меняем им габариты с 0,5 на 0,3 - так и сложнее и красивее будет...
Шагаем в третий уровень и оттуда копируем красные основания - можно все, можно одну... разницы нет! и расставляем их по левому полю
Следует понимать, что для Андроида мы не сможем создать поле, как для Винды. Поэтому несколько меньше слоев получается... Убираем все лишнее.
Что не хватает в архитектуре?
Базовые кирпичики есть, платформы тоже, шестеренки и красные основания тоже. Нет Желтых кирпичиков! И что это за архитектурные излишества? Везде кирпич, как кирпич, а тут желтый???
Это новый фрагмент игры, который в последствии будет активно применяться. Желтые кирпичи имеют свойство убивать игрока при касании их игроком - причем иногда сразу и насмерть... Зато у них есть хорошее свойство - дохнуть от стрельбы игрока. Все адекватно и ровно!
Ищем подходящий спрайт желтых кирпичей (кстати, можно и синие и красные и какие попало...), кидаем в спрайты, выносим на сцену и настраиваем по габаритам.
Далее надо блок доработать: даем имя WellYellow, в инспекторе добавляем таг Well, компонент BoxCollider2D триггерный.
Теперь для придания желтому блоку нужный свойств (убийство игрока и собственное умирание) надо написать пару скриптов.
Первым будет скрипт ущерба игроку с именем WellDamage. Так как скрипт относится к разряду Enemy, пишем его в этой папке
Второй ... да ну на фиг, писать новый скрипт...
В качестве второго вполне можно использовать скрипт уничтожения шестеренок, который уже есть и исправно функционирует. Лежит в папке Scripts / Enemy и отзывается на имя HealthControl
Теперь, чтобы все начало нормально работать надо сделать так:
Во-первых, заменить игрока (он у нас сейчас из первого уровня, где стрелять пока не умеет...). Копируем игрока со второго или третьего уроня и вставляем взамен существующего.
Еще оттуда же надо скачать папку Здоровья игрока...
Проверить настройки скриптов на игроке и поправить, если что не так.
Далее вновь созданный скрипт и уже существующий закидываем на желтый блок и настраиваем как-то так
Проверяем работоспособность. И чтобы не скакать игроку до блока - перенесем блок ближе к игроку, постреляем в него и коснемся.
Все ровно.
Ставим желтые блоки согласно диспозиции, предварительно закинув блок в папку Prefаbs / BackGround, а уже в сцене их можно уложить в BackGround / Wells, где лежат статичные блоки.
Сразу надо поправить настройку всех платформ, потому как у них настройки первого уровня, а место положения тут может отличаться...
С архитектурой все.
Остается добавить с третьего уровня огненный дождь и горизонтальные ракеты.
Для этого в третьем копируем из BackGround всю папку Enemy и вставляем ее уже в BackGround этого уровня
Раскрываем папку и корректируем контрольные точки спавнов.
В SpawnRain правую точку RightPoint переносим сюда
левую оставляем как есть.
В SpawnRoket правую (нижнюю) точку тоже немного смещаем вверх
Если теперь запустить игру, то видим, что ракеты летят слишком далеко - хотелось бы пока ограничить их полет средней стенкой, ну или левым сектором игрового поля.
Если мы поступим так: идем в папку Prtfabs / Enemy, жмем на FireSkyHor и в скрипте в строке AliveTimer меняем 10 на 2,5. Запускаем игру и проверяем - все нормально!
Однако мы сменили настройку префаба, который един для всех уровней. Стало быть, если вернуться в третий уровень и запустить его, то ракеты будут также пропадать на половине игрового поля, что совершенно не годится!!!
Самый простой вариант решения проблемы - сделать копию этого префаба с другим именем и уже использовать.
Выделяем в Prefabs / Enemy префаб FireSkyHor и Ctrl+D - дубль появился с приставкой к имени 1. Можно оставить как есть, но чтобы было понятно - где он используется, заменим 1 на 4.
Выделяем в сцене SpawnRoket и в строку FireSky тащим созданный дубль.
Теперь все хорошо...
Остается самая малось - раскидать монетки в художественном беспорядке и поправить настройку кнопки перехода на пятый уровень.
С монетками объяснять нечего.
С кнопкой тоже не трудно. В Канвасе включаем OutPanel, идем в Manager и в скрипте NextGame ставим индекс 4, что соответствует списку сцен в BuildSettings и в скрипте AgainGame индекс 3.
Остается запустить игру, пройти ее и убедиться, что все исправно.
Запускаем, проверяем.
Тяжело, но проходимо... Однако в основном мешают ракеты и дождь. Если такой режим кажется излишне сложным надо увеличить время соответственных спавнов - будет легче.
Можно заменить фоновую музыку (у меня на всех уровнях музыка разная...)
Итак, Уровень 4 готов.
Далее Уровень 5.