Как я сделал первую игру и загрузил на Яндекс.Игры. Часть 3 (Сбор и сохранение звездочек, немного UI и работа со светом)
Дисклеймер
В этой серии записей расскажу как делал первую игру от идеи до загрузки в Яндекс.Игры. Это не пошаговый туториал, но и не поверхностный рассказ. Буду рассказывать о этапах разработки, интересных решениях и небольших особенностях. Буду писать кратко или вообще не буду об очевидных вещах. Результат ниже по ссылке, а пока приступим.
Сбор и сохранение звездочек
При срабатывании триггера звездочки игроком срабатывают 3 события:
- Отключается коллайдер, чтобы не собрать звезду второй раз, пока проигрывается анимация.
- Добавляется ключ в PlayerPrefs - "1-1" это номер уровня и порядковый номер звездочки.
- Активирование триггера для анимации звездочки.
В Collect Star вносил в каждой звездочке ключ вручную(по-другому не придумал как). Такой ключ используется скриптом Check and Destroy Object. Он на старте сцены проверяет существует ли такой ключ, и если да (звездочка собрана), то удаляет ее.
Немного UI
Добавил в меню окошко настроек звука и вибрации(пока они ничего не делают), выход из игры, кол-во собранных звезд. Для подсчета всех звезд используется еще ключ-значение "stars" - число, при сборе звезды прибавляет +1 к значению.
В игре отображается номер уровня по индексу сцены и кнопка паузы, позволяющая выйти в меню или продолжить.
Весь UI рисовал в иллюстраторе, т.к. не смог найти ничего подходящего в стилистике игры. За пару часов, весь UI был отрисован.
Все картинки черно-белые, т.к. не знал, какой именно цвет подойдет, а потом переделывать неудобно. Поэтому делал так, а потом красил их в юнити.
Меню
Нашел фоны для двух локаций и сделал рандомный фон для меню. Также теперь красиво отображаются скрины, которые хранятся и подтягиваются из ScriptableObject. Также с помощью компонента Scroll Rect уровни красиво ездят по меню:)
Теперь собранные звездочки отображаются на каждом уровне. Все звездочки имеют на себе следующий скрипт:
Два новых уровня с освещением
Тематика следующих уровней — ночь, которая потребовала "немного" освещения. Пришлось переделать проект под URP и вручную поменять материалы на освещенные (автоматически не получилось).
Разные мелочи
- Партиклы — добавил небольшой коллайдер на низу карандаша, при соприкосновении с тегом Trace (у всех объектов трассы) вылетает графит.
- Параллакс — из двух слоев полупрозрачных объектов как и на трассе.
- Обучение на 1 уровне. Так себе обучение, но тут только две кнопки, даже без него можно было обойтись:)