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.
Задание
ЛегкоИсправь метод шлагбаума, затем взимай плату с автомобилей.
- Нажми «Играть»: в Console появляется ошибка, связанная с методом. Измени его на
void OnTriggerEnter(Collider other). - Внутри, когда
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)
{
// Автомобили платят за проезд; всё остальное проезжает бесплатно
}
}
Все уроки раздела Физика и игровой процесс
1Твёрдое тело
Гравитация и массаТолкаем с помощью AddForceПрыжок с импульсомFixedUpdate для физикиСкоростьКинематические телаПовторение: пусковая площадка4Корутины
InvokeInvokeRepeating, CancelInvokeВаша первая корутинаЦиклы в корутинахОстановка корутинПовторение: обратный отсчёт10Проект: Побег с арены
АренаОхотники2Столкновения
OnCollisionEnterВо что я попал?Разрушение при столкновенииСтояние на землеОтскок и трениеФормы коллайдеровПовторение: разрушаемая стена5Проект: Монетная гонка
Катящийся шарСобираем монетыПотренируйтесь самостоятельно: Песочница Unity