Menu
CoddyTech

OnCollisionEnter

Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 8 de 63.

Cuando dos colisionadores empiezan a tocarse, Unity llama a OnCollisionEnter(Collision collision) en los scripts de ambos objetos. Se llama una vez, en el paso de física en que empieza el contacto, y no vuelve a llamarse mientras sigan en contacto. Para que se produzca una colisión, al menos uno de los dos debe tener un Rigidbody que la física mueva: una pared y un suelo sin Rigidbody nunca se notifican nada entre sí.

Esta caja registra un mensaje cuando aterriza. Tiene un Rigidbody, así que cae, y el mensaje llega en el paso en que toca el suelo:

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Thud!");
}

La caja registra un mensaje una vez, y solo vuelve a hacerlo después de dejar el suelo y aterrizar por segunda vez. El suelo también recibe el mensaje: un script en él detectaría el aterrizaje de la caja, aunque el suelo no tenga Rigidbody. El nombre y el parámetro deben ser exactos. Un método llamado onCollisionEnter nunca se llama y no se produce ningún error. Si se usa uno que recibe un Collider, Unity registra Script error: OnCollisionEnter con This message parameter has to be of type: Collision y lo ignora. Mientras los dos sigan en contacto, Unity llama a OnCollisionStay en cada paso de física y, cuando se separan, llama una vez a OnCollisionExit.

challenge icon

Desafío

Fácil

La placa de presión cuenta lo que cae sobre ella. La placa no tiene un Rigidbody; la caja que está encima sí tiene uno y cae sobre ella.

  • Cada vez que algo empieza a tocar la placa, suma 1 a un contador y regístralo: Pressed 1, después Pressed 2 y así sucesivamente.
  • Algo que permanece sobre la placa cuenta una sola vez, por mucho tiempo que se quede.

Pulsa Play y observa la consola; después, pulsa Check.

Pruébalo tú mismo

using UnityEngine;

public class PressurePlate : MonoBehaviour
{
    // Cuenta cada vez que algo aterriza sobre la placa y regístralo: Pressed 1, Pressed 2, ...
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Física y jugabilidad