OnTriggerEnter
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 16 di 71.
void OnTriggerEnter(Collider other) viene eseguito una volta, durante il passo di fisica in cui un altro collider inizia a sovrapporsi a un trigger. other è quel collider, quindi other.name, other.gameObject e other.CompareTag("Player") ti dicono che cosa è entrato. Unity lo chiama negli script di entrambi gli oggetti: sul trigger, other è l'oggetto che entra, mentre sull'oggetto che entra, other è il trigger.
Questa linea di arrivo reagisce al giocatore e a nient'altro, quindi una palla che ci rotola sopra non registra nulla:
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log(other.name + " crossed the finish line");
}
}Il parametro deve essere un Collider. Se è scritto come void OnTriggerEnter(Collision collision), lo script viene comunque compilato, perché per C# è un metodo ordinario. Unity controlla il parametro stesso, registra un Script error: OnTriggerEnter che dice This message parameter has to be of type: Collider e non chiama mai il metodo. Collision appartiene a OnCollisionEnter, dove due corpi solidi si incontrano in un punto di contatto. Un trigger non ha un contatto da segnalare, ma solo il collider, quindi riceve un Collider.
Sfida
FacileCorreggi il metodo del casello, poi riscuoti il pedaggio dalle auto.
- Premi «Gioca»: la Console mostra un errore relativo al metodo. Modificalo in
void OnTriggerEnter(Collider other). - All'interno, quando
other.CompareTag("Car"), aggiungitollacollectede registra"Toll: " + collected. Il ciclista passa gratis.
Premi «Gioca»: la Console mostra Toll: 3, poi Toll: 6. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class TollGate : MonoBehaviour
{
public int toll = 3;
int collected;
void OnTriggerEnter(Collision collision)
{
// Le auto pagano il pedaggio; tutto il resto passa gratis
}
}
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