OnTriggerEnter
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 16 z 63.
void OnTriggerEnter(Collider other) uruchamia się raz, w kroku fizyki, w którym inny collider zaczyna nachodzić na trigger. other to ten collider, więc other.name, other.gameObject i other.CompareTag("Player") informują, co weszło. Unity wywołuje tę metodę w skryptach obu obiektów: na triggerze other jest obiektem wchodzącym, a na tym obiekcie — triggerem.
Ta linia mety reaguje na gracza i na nic innego, więc piłka, która przez nią przetoczy się, niczego nie zapisze w logu:
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log(other.name + " crossed the finish line");
}
}Parametr musi być typu Collider. Zapisany jako void OnTriggerEnter(Collision collision), skrypt nadal się kompiluje, ponieważ dla C# jest to zwykła metoda. Unity sprawdza sam parametr, zapisuje w logu Script error: OnTriggerEnter z komunikatem This message parameter has to be of type: Collider i nigdy nie wywołuje tej metody. Collision należy do OnCollisionEnter, gdzie dwa ciała stałe stykają się w punkcie kontaktu. Trigger nie ma kontaktu do zgłoszenia, tylko collider, więc otrzymuje Collider.
Wyzwanie
ŁatwyPojazdy przejeżdżają przez bramkę Gate, która jest wyzwalaczem. Skrypt Driver porusza nimi i jest już gotowy. Napisz skrypt bramki TollGate:
- Każdy pojazd oznaczony tagiem
Carpłacitoll(3): dodaj tę wartość docollectedi wyświetl sumę w logu:Toll: 3dla pierwszego samochodu, a następnieToll: 6. - Wszystko inne, na przykład Rowerzysta, przejeżdża bezpłatnie i niczego nie wyświetla w logu.
Najpierw naciśnij Play: w konsoli jest już widoczny błąd skryptu dotyczący metody w jej obecnej postaci. Napraw go, a następnie kliknij Check.
Spróbuj swoich sił
using UnityEngine;
public class TollGate : MonoBehaviour
{
public int toll = 3;
int collected;
void OnTriggerEnter(Collision collision)
{
// Samochody płacą myto; wszystko inne przejeżdża za darmo
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Fizyka i rozgrywka
1Ciało sztywne
Grawitacja i masaPopychanie za pomocą AddForceSkok z impulsemFixedUpdate dla fizykiPrędkośćCiała kinematycznePowtórka: platforma startowa2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur