Menu
CoddyTech

OnTriggerEnter

Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 16 / 71.

void OnTriggerEnter(Collider other) bir kez, başka bir çarpıştırıcı tetikleyiciyle örtüşmeye başladığında gerçekleşen fizik adımında çalışır. other bu çarpıştırıcıdır; dolayısıyla other.name, other.gameObject ve other.CompareTag("Player") içeri neyin girdiğini gösterir. Unity bunu her iki nesnenin de betiklerinde çağırır: tetikleyicide other gelen nesneyi, gelen nesnede ise other tetikleyiciyi ifade eder.

Bu bitiş çizgisi yalnızca oyuncuya tepki verir; başka hiçbir şeye tepki vermez. Bu yüzden çizgiyi geçen bir top hiçbir şey kaydetmez:

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        Debug.Log(other.name + " crossed the finish line");
    }
}

Parametre bir Collider olmalıdır. void OnTriggerEnter(Collision collision) olarak yazıldığında betik yine derlenir, çünkü C# açısından bu sıradan bir metottur. Unity parametrenin kendisini denetler, This message parameter has to be of type: Collider diyen bir Script error: OnTriggerEnter kaydı oluşturur ve metodu hiçbir zaman çağırmaz. Collision, iki katı gövdenin bir temas noktasında buluştuğu OnCollisionEnter için kullanılır. Bir tetikleyicinin bildireceği bir teması yoktur; yalnızca çarpıştırıcı vardır, bu yüzden bir Collider alır.

challenge icon

Görev

Kolay

Ücret gişesinin metodunu düzelt, ardından araçlardan geçiş ücreti al.

  1. “Oyna” düğmesine bas: Console metotla ilgili bir hata gösteriyor. Metodu void OnTriggerEnter(Collider other) olarak değiştir.
  2. Metodun içinde, other.CompareTag("Car") koşulu sağlandığında toll değerini collected değerine ekle ve "Toll: " + collected ifadesini logla. Bisikletli ücretsiz geçer.

“Oyna” düğmesine bas: Console önce Toll: 3, sonra Toll: 6 gösteriyor. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class TollGate : MonoBehaviour
{
    public int toll = 3;
    int collected;

    void OnTriggerEnter(Collision collision)
    {
        // Arabalar geçiş ücreti öder; diğer her şey ücretsiz geçer
    }
}

Fizik ve Oynanış bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground