Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Napraw metodę bramki poboru opłat, a następnie pobieraj opłatę od samochodów.

  1. Naciśnij „Graj”: w konsoli pojawi się błąd dotyczący metody. Zmień ją na void OnTriggerEnter(Collider other).
  2. W jej wnętrzu, gdy other.CompareTag("Car"), dodaj toll do collected i 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

Poćwicz samodzielnie: Edytor online Unity