Menu
CoddyTech

Collider di trigger

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 15 di 63.

Un collider con Is Trigger selezionato non è più solido: i corpi rigidi lo attraversano, e Unity segnala invece la sovrapposizione chiamando OnTriggerEnter negli script di entrambi gli oggetti. Le linee di arrivo, gli oggetti da raccogliere e le zone pericolose sono trigger. Nel codice, la casella corrisponde alla proprietà isTrigger del collider.

La zona d’allarme di questo caveau imposta il collider come trigger all’avvio del gioco, proprio come se si selezionasse la casella, e fa scattare l’allarme quando una guardia vi entra:

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

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

I trigger seguono la stessa regola delle collisioni: Unity controlla una coppia solo quando almeno uno dei due oggetti ha un Rigidbody. Due oggetti senza Rigidbody non si rilevano mai a vicenda, che siano trigger o meno. Le guardie pattugliano tramite uno script, quindi ognuna ha un Rigidbody cinematico (Add Component, Rigidbody, Is Kinematic selezionato): la gravità e gli urti non influiscono su di essa, ma conta comunque come Rigidbody. Senza i Rigidbody delle guardie, una guardia attraversa la zona e la Console rimane vuota. Senza isTrigger, la zona è una scatola solida e un corpo cinematico non tocca mai un collider privo di Rigidbody, quindi non viene registrato nulla neanche in questo caso. È sufficiente un solo Rigidbody nella coppia, su uno qualsiasi dei due oggetti. Nella prossima lezione vedrai other, il collider che è entrato.

challenge icon

Sfida

Facile

Il Drone deve seguire un percorso attraverso tre anelli e ogni Ring deve registrare il proprio nome e passed mentre il drone lo attraversa, ad esempio Ring1 passed. Per ora non funziona nulla: lo script del drone lo fa volare usando MovePosition, ma nella scena non c'è alcun Rigidbody e gli anelli sono solidi.

  • In Drone.cs, assegna al drone un Rigidbody all'avvio del gioco e conservalo in body. Il drone deve volare in piano lungo il suo percorso. Un solo corpo sul drone è sufficiente per tutti e tre gli anelli.
  • In Ring.cs, imposta il collider di ogni anello come trigger all'avvio del gioco.

Premi Play e osserva la Console, poi Check.

Provalo tu

using UnityEngine;

public class Ring : MonoBehaviour
{
    void Start()
    {
        // Rendi il collider di questo anello un trigger
    }

    void OnTriggerEnter(Collider other)
    {
        Debug.Log(name + " passed");
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fisica e gameplay