Menu
CoddyTech

OnTriggerEnter

Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 16 из 71.

void OnTriggerEnter(Collider other) выполняется один раз на шаге физики, когда другой коллайдер начинает пересекаться с триггером. other — это тот коллайдер, поэтому other.name, other.gameObject и other.CompareTag("Player") сообщают, что именно вошло. Unity вызывает этот метод в скриптах обоих объектов: на триггере other — это объект, вошедший в него, а на вошедшем объекте other — это триггер.

Эта финишная линия реагирует на игрока и ни на что другое, поэтому мяч, перекатившийся через неё, ничего не выводит в журнал:

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        Debug.Log(other.name + " crossed the finish line");
    }
}

Параметр должен иметь тип Collider. Если написать void OnTriggerEnter(Collision collision), скрипт всё равно скомпилируется, потому что для C# это обычный метод. Unity проверяет сам параметр, выводит ошибку Script error: OnTriggerEnter с сообщением This message parameter has to be of type: Collider и никогда не вызывает метод. Collision используется в OnCollisionEnter, когда два твёрдых тела соприкасаются в точке контакта. У триггера нет точки контакта, о которой можно сообщить, только коллайдер, поэтому ему нужен Collider.

challenge icon

Задание

Легко

Исправь метод шлагбаума, затем взимай плату с автомобилей.

  1. Нажми «Играть»: в Console появляется ошибка, связанная с методом. Измени его на void OnTriggerEnter(Collider other).
  2. Внутри, когда other.CompareTag("Car"), прибавь toll к collected и выведи в журнал "Toll: " + collected. Велосипедист проезжает бесплатно.

Нажми «Играть»: в Console отображается Toll: 3, затем Toll: 6. После этого нажми «Проверить».

Попробуйте сами

using UnityEngine;

public class TollGate : MonoBehaviour
{
    public int toll = 3;
    int collected;

    void OnTriggerEnter(Collision collision)
    {
        // Автомобили платят за проезд; всё остальное проезжает бесплатно
    }
}

Все уроки раздела Физика и игровой процесс

Потренируйтесь самостоятельно: Песочница Unity