Entrata e uscita
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 19 di 63.
Un trigger invia altri due messaggi. OnTriggerExit(Collider other) viene eseguito una volta, nel passo fisico in cui termina la sovrapposizione, indipendentemente da come termina. OnTriggerStay(Collider other) viene eseguito a ogni passo fisico per tutta la durata della 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 in un passo fisico, quindi OnTriggerStay è adatto: la spinta viene applicata una volta per passo 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 vi entra deve averne uno, e qui attachedRigidbody non è mai null. Per un valore per secondo all'interno di OnTriggerStay, moltiplica per Time.deltaTime, che durante un passo fisico corrisponde alla durata del passo, 0.02. Ogni ingresso genera un OnTriggerEnter e, in seguito, un OnTriggerExit per lo stesso collider.
Sfida
FacileLa Baia gialla dipinta sul pavimento del magazzino è un trigger e lamp è la spia sul palo accanto. Scrivi LoadingBay in modo che la spia indichi se c'è qualcosa nella baia:
- Quando inizia il gioco la baia è vuota, quindi la spia è spenta (
lamp.enabled = false). - Finché c'è almeno un oggetto nella baia, la spia è accesa.
- Quando l'ultimo oggetto esce, la spia si spegne di nuovo.
Due casse e il giocatore possono trovarsi tutti nella baia contemporaneamente, quindi l'uscita di uno non significa che la baia sia vuota. Premi Play e spingi le casse dentro e fuori usando le frecce, poi Check.
Provalo tu
using UnityEngine;
public class LoadingBay : MonoBehaviour
{
public Light lamp;
// La lampada è accesa finché c'è qualcosa nella baia di carico e spenta quando la baia è vuota
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
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 rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere