Menu
CoddyTech

Tetikleyici Çarpıştırıcılar

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

Is Trigger işaretli olan bir collider artık katı değildir: Rigidbody bileşenleri doğrudan içinden geçer ve Unity bunun yerine her iki nesnenin de betiklerinde OnTriggerEnter çağırarak çakışmayı bildirir. Bitiş çizgileri, toplanabilir nesneler ve tehlike bölgeleri tetikleyicidir. Kodda bu kutu, collider'ın isTrigger özelliğidir.

Bu kasanın alarm bölgesi, oyun başladığında collider'ını bir tetikleyiciye dönüştürür; bu, kutuyu işaretlemekle aynıdır ve bir muhafız içeri girdiğinde alarmı çalar:

void Start()
{
    GetComponent<Collider>().isTrigger = true;
}

void OnTriggerEnter(Collider other)
{
    Debug.Log("Alarm!");
}

Tetikleyiciler çarpışmalarla aynı kurala uyar: Unity bir nesne çiftini yalnızca iki nesneden en az birinde Rigidbody varsa denetler. Rigidbody'si olmayan iki nesne, tetikleyici olsun ya da olmasın, birbirlerini asla bildirmez. Muhafızlar bir betikle devriye gezdiğinden, her muhafızda kinematik bir Rigidbody bulunur (Add Component, Rigidbody, Is Kinematic işaretli): yer çekimi ve çarpmalar onu etkilemez ve yine de bir Rigidbody olarak sayılır. Muhafızlarda Rigidbody olmasaydı, muhafız bölgenin içinden geçer ve Console boş kalırdı. isTrigger olmadan bölge katı bir kutudur ve kinematik bir gövde, Rigidbody'si olmayan bir collider'a asla dokunmaz; dolayısıyla yine hiçbir şey kaydedilmez. Çiftteki nesnelerden herhangi birinde bulunan tek bir Rigidbody yeterlidir. Sonraki derste, içeri giren collider olan other konusuna bakacağız.

challenge icon

Görev

Kolay

Drone, üç halkadan geçen bir rota boyunca uçmalı ve her Ring, drone içinden geçerken adını ve passed ifadesini kaydetmeli; örneğin Ring1 passed. Henüz hiçbir şey çalışmıyor: drone'un betiği onu MovePosition ile uçuruyor, ancak sahnedeki hiçbir nesnede Rigidbody yok ve halkalar katı.

  • Drone.cs içinde, oyun başladığında drone'a bir Rigidbody ekle ve bunu body içinde tut. Drone rotası boyunca aynı yükseklikte uçmalı. Drone üzerindeki tek bir gövde üç halkanın tamamını kapsar.
  • Ring.cs içinde, oyun başladığında her halkanın collider'ını bir tetikleyici hâline getir.

Play'e basıp Console'u izle, ardından Check'e bas.

Kendin dene

using UnityEngine;

public class Ring : MonoBehaviour
{
    void Start()
    {
        // Bu halkanın collider'ını trigger yap
    }

    void OnTriggerEnter(Collider other)
    {
        Debug.Log(name + " passed");
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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