Этот урок описывает создание механики сбора диамантов, появляющихся на блоках, по которым прыгает игрок. Собранные диаманты учитываются в общей переменной и в дальнейшем могут быть использованы для покупок.
Подготовка спрайта диаманта
Скачайте изображение диаманта (например, с сайта Icon Finder). Перетащите его в папку sprites в Unity. Рекомендуется изменить формат изображения с compressed на 16-битный (True Color) для улучшения качества.
Настройка отображения счётчика диамантов
- Создайте объект Image и поместите в него спрайт диаманта. Уменьшите размер спрайта.
- Разместите Image под надписью с рекордом. Переименуйте его в Diamonds. Установите свойство Static в true.
- Дублируйте текстовое поле рекорда и разместите его рядом с Image диамантов. Переименуйте его в Count. Это поле будет отображать количество собранных диамантов. Установите начальное значение 0.
- Настройте позиционирование элементов интерфейса для разных разрешений экрана. Добавьте к Image диаманта компонент Aspect Ratio Fitter для корректного масштабирования. При необходимости, подкорректируйте размеры элементов.
Создание и размещение диамантов на блоках
- Создайте пустой GameObject с именем Diamonds и активируйте его (SetActive(true)) при запуске игры.
- Создайте C# скрипт Count и прикрепите его к текстовому полю Count. Этот скрипт будет обновлять количество диамантов.
- В скрипте Count, используя UnityEngine.UI, создайте приватную переменную типа Text (например, txt) и получите компонент Text через GetComponent<Text>().
- В методе Start() скрипта Count получите количество диамантов из PlayerPrefs.GetInt("Diamonds") и отобразите его в текстовом поле.
- Создайте префаб диаманта из существующего спрайта. Добавьте к префабу BoxCollider2D и установите его как триггер.
- В скрипте SpawnBlocks добавьте создание диамантов вместе с блоками, например, через определённый интервал (каждый второй или восьмой блок). Используйте Instantiate для создания префаба диаманта.
- Настройте позицию диаманта относительно блока, используя координаты блока и смещение по оси Y. Сделайте диамант дочерним объектом блока (block.transform).
Сбор диамантов
Создайте C# скрипт CollectDiamonds. В методе OnTriggerEnter2D проверьте столкновение игрока с объектом, имеющим тег Diamond. При столкновении:
- Уничтожьте объект диаманта (Destroy(other.gameObject)).
- Увеличьте количество диамантов в PlayerPrefs: PlayerPrefs.SetInt("Diamonds", PlayerPrefs.GetInt("Diamonds") + 1).
- Обновите текст в поле Count. Добавьте компонент Text в скрипт CollectDiamonds и получите доступ к полю Count через FindObjectOfType<Text>().text = … или назначьте его через редактор Unity.
- Добавьте тег «Diamond» к префабу диаманта. Убедитесь, что у кубика игрока есть BoxCollider2D и у диаманта — BoxCollider2D.
В этом уроке реализована механика сбора диамантов. В следующих уроках будет создан магазин для покупки новых кубиков.