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.
Desafío
FácilLa 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ésPressed 2y 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, ...
}
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
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de monedas
La bola rodanteMonedas para recoger