Этот урок посвящен сбору объектов в игре. Начнем с запуска игры и наблюдения за происходящим. В текущем состоянии столкновения с объектами не позволяют проходить сквозь них. Это объясняется наличием у каждого куба коллайдера, который по умолчанию является твердым телом.
Работа с коллайдерами и триггерами
Каждый коллайдер имеет параметр 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); // Уничтожаем объект
}
После столкновения куб удаляется из игры и иерархии объектов.
Мы научились собирать кубики, используя коллайдеры, триггеры и теги. В следующих уроках добавим подсчет собранных кубов и сообщение о победе.