Unity 5: Сбор диамантов в 2D игре (Урок 13)

Этот урок описывает создание механики сбора диамантов, появляющихся на блоках, по которым прыгает игрок. Собранные диаманты учитываются в общей переменной и в дальнейшем могут быть использованы для покупок.

Подготовка спрайта диаманта

Скачайте изображение диаманта (например, с сайта Icon Finder). Перетащите его в папку sprites в Unity. Рекомендуется изменить формат изображения с compressed на 16-битный (True Color) для улучшения качества.

Настройка отображения счётчика диамантов

  1. Создайте объект Image и поместите в него спрайт диаманта. Уменьшите размер спрайта.
  2. Разместите Image под надписью с рекордом. Переименуйте его в Diamonds. Установите свойство Static в true.
  3. Дублируйте текстовое поле рекорда и разместите его рядом с Image диамантов. Переименуйте его в Count. Это поле будет отображать количество собранных диамантов. Установите начальное значение 0.
  4. Настройте позиционирование элементов интерфейса для разных разрешений экрана. Добавьте к Image диаманта компонент Aspect Ratio Fitter для корректного масштабирования. При необходимости, подкорректируйте размеры элементов.

Создание и размещение диамантов на блоках

  1. Создайте пустой GameObject с именем Diamonds и активируйте его (SetActive(true)) при запуске игры.
  2. Создайте C# скрипт Count и прикрепите его к текстовому полю Count. Этот скрипт будет обновлять количество диамантов.
  3. В скрипте Count, используя UnityEngine.UI, создайте приватную переменную типа Text (например, txt) и получите компонент Text через GetComponent<Text>().
  4. В методе Start() скрипта Count получите количество диамантов из PlayerPrefs.GetInt("Diamonds") и отобразите его в текстовом поле.
  5. Создайте префаб диаманта из существующего спрайта. Добавьте к префабу BoxCollider2D и установите его как триггер.
  6. В скрипте SpawnBlocks добавьте создание диамантов вместе с блоками, например, через определённый интервал (каждый второй или восьмой блок). Используйте Instantiate для создания префаба диаманта.
  7. Настройте позицию диаманта относительно блока, используя координаты блока и смещение по оси Y. Сделайте диамант дочерним объектом блока (block.transform).

Сбор диамантов

Создайте C# скрипт CollectDiamonds. В методе OnTriggerEnter2D проверьте столкновение игрока с объектом, имеющим тег Diamond. При столкновении:

  1. Уничтожьте объект диаманта (Destroy(other.gameObject)).
  2. Увеличьте количество диамантов в PlayerPrefs: PlayerPrefs.SetInt("Diamonds", PlayerPrefs.GetInt("Diamonds") + 1).
  3. Обновите текст в поле Count. Добавьте компонент Text в скрипт CollectDiamonds и получите доступ к полю Count через FindObjectOfType<Text>().text = … или назначьте его через редактор Unity.
  4. Добавьте тег «Diamond» к префабу диаманта. Убедитесь, что у кубика игрока есть BoxCollider2D и у диаманта — BoxCollider2D.

В этом уроке реализована механика сбора диамантов. В следующих уроках будет создан магазин для покупки новых кубиков.

Что будем искать? Например,программа