OnCollisionEnter
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 8 di 63.
Quando due collider iniziano a toccarsi, Unity chiama OnCollisionEnter(Collision collision) negli script di entrambi gli oggetti. Viene chiamato una sola volta, nel passo di fisica in cui inizia il contatto, e non di nuovo mentre gli oggetti rimangono a contatto. Perché avvenga una collisione, almeno uno dei due deve avere un Rigidbody mosso dalla fisica: un muro e un pavimento senza Rigidbody non si segnalano mai nulla a vicenda.
Questa cassa registra un messaggio quando atterra. Ha un Rigidbody, quindi cade, e il messaggio arriva nel passo in cui incontra il pavimento:
void OnCollisionEnter(Collision collision)
{
Debug.Log("Thud!");
}La cassa registra un messaggio una volta, e di nuovo solo dopo aver lasciato il pavimento ed essere atterrata una seconda volta. Anche il pavimento riceve il messaggio: uno script su di esso rileverebbe l’atterraggio della cassa, anche se il pavimento non ha un Rigidbody. Il nome e il parametro devono essere esatti. Un metodo chiamato onCollisionEnter non viene mai chiamato, senza alcun errore. Un metodo che accetta un Collider fa sì che Unity registri Script error: OnCollisionEnter con This message parameter has to be of type: Collision e lo ignori. Mentre i due oggetti rimangono a contatto, Unity chiama OnCollisionStay a ogni passo di fisica e, quando si separano, chiama OnCollisionExit una volta.
Sfida
FacileLa piastra a pressione conta ciò che vi atterra sopra. La piastra non ha un Rigidbody; la cassa sopra di essa ne ha uno e vi cade sopra.
- Ogni volta che qualcosa inizia a toccare la piastra, aggiungi 1 a un conteggio e registralo:
Pressed 1, poiPressed 2e così via. - Qualcosa che rimane sulla piastra viene conteggiato una sola volta, per quanto a lungo resti lì.
Premi Play e osserva la Console, poi Check.
Provalo tu
using UnityEngine;
public class PressurePlate : MonoBehaviour
{
// Conta ogni atterraggio e registralo nel log: Pressed 1, Pressed 2, ...
}
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