Как я сделал первую игру и загрузил на Яндекс.Игры. Часть 4 (Новые уровни, новые механики, смена скинов)
Дисклеймер
В этой серии записей расскажу как делал первую игру от идеи до загрузки в Яндекс.Игры. Это не пошаговый туториал, но и не поверхностный рассказ. Буду рассказывать о этапах разработки, интересных решениях и небольших особенностях. Буду писать кратко или вообще не буду об очевидных вещах. Результат ниже по ссылке, а пока приступим.
Новые уровни
Создал 4 огненных уровня, 3 цирковых и 3 зимних. В них отличались объекты из которых делалась трасса, они были подобраны тематически в соответствии с уровнем. Также начала изменяться геометрия уровня, в начале уровни были линейные и ровно шли по прямой, сейчас появляются ответвления и уровни становятся более сложными.
Освещение также было разным, в огненном светились огни, как ни странно. В цирковом звезды и прожектор, который следил за игроком. В зимнем немного затемненное освещение с парочкой лучей, пробивавшихся с неба.
Добавил партиклы: в огненном как пепел летящий снизу вверх, в цирковом также, но скорее это пыль:) В зимнем снег, по понятной причине.
Новые механики
В каждой локации добавляются свои механики, чтобы разнообразить геймплей. В огненном уровне — это восходящий поток, поднимающий карандаш вверх. Механика делалась не сложно: есть коллайдер, заходя в него меняем гравитацию карандаша на отрицательную, при выходе, меняем обратно как было. Простая механика, которая помогла внести что-то новое и разнообразить левел-дизайн.
В цирковых локациях были добавлены движущиеся предметы. Немного сложнее, пришлось покопаться в документации, чтобы узнать как правильно двигать объекты. Применял только вращение, по кругу и частично на определенный угол, с помощью корутин.
Зимние уровни получили заморозку и летящие с неба снежки. Также с помощью корутин ставим на определенное время вектор движение 0,0, картинку заморозки(потом заменил на нормальную) и игрок замирает. Данные выводим в инспектор и регулируем до приемлимой игры.
Магазин скинов
Скины сделаны по такому же принципу как уровни в меню. Есть ScriptableObject в котором хранятся данные о скине: название, спрайт, цена и цвет партиклов от грифеля.
Скрипт SkinDisplay получает в инспекторе соответствующий ScriptableObject и подгружает данные через него. Также в инспекторе указываем UI элементы, которые нужно поменять и массив с именами всех скинов.
Такой скрипт получился, данные о покупке и использовании скинов заносится в PlyerPrefs с ключами 0 - закрыт, 1 - куплен, 2 - надет.
Ниже на видео внизу скинов отображаются ключи. На старте загрузки сцены скрипт игрока проверяет весь массив скинов и устанавливает скин у которого ключ 2.
Также перерисовал в иллюстраторе карандаш на более подходящий по стилю игры.