Entrare e uscire
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 20 di 71.
Un trigger invia altri due messaggi. OnTriggerExit(Collider other) viene eseguito una volta, durante il passaggio di fisica in cui termina la sovrapposizione, in qualunque modo termini. OnTriggerStay(Collider other) viene eseguito a ogni passaggio di fisica finché dura la sovrapposizione, 50 volte al secondo per impostazione predefinita, come FixedUpdate(). Tutti e tre ricevono lo stesso Collider.
Questa corrente ascensionale solleva tutto ciò che galleggia al suo interno e segnala quando esce:
public float lift = 15f;
void OnTriggerStay(Collider other)
{
other.attachedRigidbody.AddForce(Vector3.up * lift);
}
void OnTriggerExit(Collider other)
{
Debug.Log(other.name + " left the updraft");
}Una forza va applicata durante un passaggio di fisica, quindi OnTriggerStay è adatto: la spinta viene applicata una volta per passaggio finché la palla si trova all'interno e si interrompe nel momento in cui esce. La corrente ascensionale non ha un Rigidbody, quindi ogni oggetto che la attraversa deve averne uno e qui attachedRigidbody non è mai null. Per applicare una quantità al secondo all'interno di OnTriggerStay, moltiplica per Time.deltaTime, che durante un passaggio di fisica corrisponde alla durata del passaggio, 0.02. Ogni attraversamento genera un OnTriggerEnter e, in seguito, un OnTriggerExit per lo stesso collider.
Sfida
FacileAccendi la lampada quando c'è qualcosa nell'area di carico.
- Aggiungi un campo
int inBay;. InStart(), impostalamp.enabled = false;. - In
OnTriggerEnter, aggiungi 1 ainBaye impostalamp.enabled = true;. - In
OnTriggerExit, sottrai 1 dainBaye spegni la lampada solo quando il valore è 0.
Premi «Gioca» e spingi le casse dentro e fuori: la lampada rimane accesa finché l'area non è vuota. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class LoadingBay : MonoBehaviour
{
public Light lamp;
// La lampada è accesa finché c'è qualcosa nella baia di carico e si spegne quando la baia è vuota
}
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