Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Pojazdy 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 Car płaci toll (3): dodaj tę wartość do collected i wyświetl sumę w logu: Toll: 3 dla pierwszego samochodu, a następnie Toll: 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
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Fizyka i rozgrywka