Unity 3D: Сбор кубиков — работа с коллайдерами и триггерами

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

Работа с коллайдерами и триггерами

Каждый коллайдер имеет параметр Is Trigger. Установив его, объект становится «прозрачным» — сквозь него можно проходить. Изменим параметр Is Trigger для основного куба в префабе. Теперь можно проходить сквозь все кубы.

Сбор кубиков: функция и обработка столкновений

Создадим функцию для удаления куба после прохождения игроком сквозь него. Также добавим подсчет собранных кубов и вывод сообщения о победе (в следующих уроках).

В скрипте PlayerController добавим функцию OnTriggerEnter. Она вызывается при соприкосновении игрока (объекта со скриптом PlayerController) с объектом, у которого установлен флажок Is Trigger.

Функция принимает параметр other типа Collider, содержащий информацию о коллайдере объекта, с которым произошло столкновение.

void OnTriggerEnter(Collider other) {
  // Здесь будет код для обработки столкновения
}

Идентификация объектов: от имен к тегам

Сначала проверим имя объекта столкновения. Например, «Куб 4».

if (other.name == "Куб 4") {
  other.gameObject.SetActive(false); // Скрываем объект
}

Этот метод неэффективен, поскольку работает только с одним конкретным кубом. Лучше использовать теги.

В Unity теги служат для группировки объектов. Добавим тег «Куб» ко всем кубикам в префабе куба, в инспекторе.

Теперь можно проверять тег объекта в функции OnTriggerEnter:

if (other.CompareTag("Куб")) {
  other.gameObject.SetActive(false); // Скрываем объект
}

Этот подход универсален и позволяет легко добавлять новые кубы без изменения кода.

Уничтожение кубиков

Вместо скрытия, уничтожим кубы для освобождения ресурсов, используя функцию Destroy:

if (other.CompareTag("Куб")) {
  Destroy(other.gameObject); // Уничтожаем объект
}

После столкновения куб удаляется из игры и иерархии объектов.

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

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