Collider trigger
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 15 di 71.
Un collider con la casella È un trigger selezionata 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, come se selezionassi 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 rilevano mai l’uno la presenza dell’altro, che siano trigger oppure no. Le guardie pattugliano tramite uno script, quindi ognuna ha un Rigidbody cinematico (Aggiungi componente, Rigidbody, casella Is Kinematic selezionata): la gravità e gli urti non lo influenzano, 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 che non ha un Rigidbody, quindi non viene registrato nulla. Basta un Rigidbody nella coppia, su uno qualsiasi dei due oggetti. La prossima lezione esamina other, il collider che è entrato.
Sfida
FacileFai volare il drone attraverso gli anelli e lascia che ogni anello lo segnali.
- In
Drone.cs, inStart(), impostabody = gameObject.AddComponent<Rigidbody>();ebody.isKinematic = true;, così volerà in piano. - In
Ring.cs, inStart(), impostaGetComponent<Collider>().isTrigger = true;.
Premi «Gioca»: il drone vola attraverso gli anelli e la Console mostra Ring1 passed, Ring2 passed e Ring3 passed. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Ring : MonoBehaviour
{
void Start()
{
// Imposta il collider di questo anello come trigger
}
void OnTriggerEnter(Collider other)
{
Debug.Log(name + " passed");
}
}
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia7Rotazione
Angoli di EuleroQuaternioniGuarda nella direzione in cui ti muoviRuota in modo fluidoRiepilogo: Torretta10Progetto: Fuga dall'arena
L'arenaCacciatori2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliereEsercitati da solo: Playground Unity