Menu
CoddyTech

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.

challenge icon

Sfida

Facile

La 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, poi Pressed 2 e 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, ...
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fisica e gameplay