OnTriggerEnter
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 16 z 71.
Funkcja void OnTriggerEnter(Collider other) uruchamia się raz, w kroku fizyki, w którym inny komponent typu collider zaczyna nachodzić na trigger. other to ten komponent typu collider, więc other.name, other.gameObject i other.CompareTag("Player") informują, co się z nim zetknęło. Unity wywołuje tę funkcję w skryptach obu obiektów: w przypadku triggera other jest obiektem odwiedzającym, a w przypadku obiektu odwiedzającego other jest triggerem.
Ta linia mety reaguje na gracza i na nic innego, więc piłka, która się przez nią przetoczy, 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. Zapisana jako void OnTriggerEnter(Collision collision), metoda nadal się kompiluje, ponieważ dla C# jest zwykłą metodą. Unity sprawdza sam parametr, zapisuje w logu błąd 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 komponent typu collider, więc otrzymuje Collider.
Wyzwanie
ŁatwyNapraw metodę bramki poboru opłat, a następnie pobieraj opłatę od samochodów.
- Naciśnij „Graj”: w konsoli pojawi się błąd dotyczący metody. Zmień ją na
void OnTriggerEnter(Collider other). - W jej wnętrzu, gdy
other.CompareTag("Car"), dodajtolldocollectedi wyświetl w logu"Toll: " + collected. Rowerzysta przejeżdża za darmo.
Naciśnij „Graj”: w konsoli pojawi się Toll: 3, a następnie Toll: 6. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class TollGate : MonoBehaviour
{
public int toll = 3;
int collected;
void OnTriggerEnter(Collision collision)
{
// Samochody płacą za przejazd; wszystko inne przejeżdża za darmo
}
}
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 startowa4Korutyny
WywoływanieInvokeRepeating i CancelInvokeTwoja pierwsza korutynaPętle w korutynachZatrzymywanie korutynPodsumowanie: odliczanie10Projekt: Ucieczka z areny
ArenaŁowcy2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur5Projekt: Wyścig po monety
Tocząca się piłkaZbieranie monet3Wyzwalacze
Kolizje wyzwalająceOnTriggerEnterPrzedmioty do zebraniaSkrzynie zatrzymują resztęStrefy śmierciWejście i wyjściePodsumowanie: klucz i drzwiPoćwicz samodzielnie: Edytor online Unity