🎮 UnityDocs

Colliders y triggers

La diferencia entre chocar (colisión) y atravesar detectando el paso (trigger), qué componentes hacen falta, los métodos OnCollision/OnTrigger y la tabla de qué combinaciones funcionan.

📄 ArtículoIntermedio✅ RevisadoUnity 6.0 LTSActualizado 2026-07-14
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 8 min · ⌨️ Práctica 20 min

Colisión vs trigger#

Hay dos formas de que dos objetos interactúen físicamente:

  • Colisión: chocan de verdad. Se frenan, rebotan, se empujan. Una pared, el suelo, una caja.
  • Trigger: uno atraviesa al otro y solo detectamos el paso, sin frenar a nadie. Una moneda, una zona de meta, un detector.

Un collider se convierte en trigger marcando la casilla Is Trigger en el Inspector.

Qué necesitas para que funcione#

Esta es la fuente número uno de "no me detecta nada":

La regla de oro de las colisiones

Para que se disparen los eventos, ambos objetos necesitan un Collider, y al menos uno de los dos debe tener un Rigidbody. Si dos objetos con collider pero sin ningún Rigidbody se tocan, no ocurre nada.

Detectar colisiones por código#

C#
using UnityEngine;

public class Jugador : MonoBehaviour
{
    // COLISIÓN física (colliders sin Is Trigger)
    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.CompareTag("Enemigo"))
            Debug.Log("Me ha golpeado un enemigo");

        // Punto de contacto, útil para efectos
        Vector3 punto = col.GetContact(0).point;
    }

    // TRIGGER (uno de los colliders con Is Trigger)
    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Moneda"))
        {
            Recoger();
            Destroy(other.gameObject);
        }
    }
}

Cada evento tiene tres momentos:

ColisiónTriggerCuándo
OnCollisionEnterOnTriggerEnterAl empezar el contacto
OnCollisionStayOnTriggerStayCada frame mientras dura
OnCollisionExitOnTriggerExitAl separarse
2D usa sus propios métodos

En 2D los métodos llevan el sufijo 2D: OnCollisionEnter2D(Collision2D), OnTriggerEnter2D(Collider2D). Nunca mezcles componentes 2D con 3D: un Collider2D no interactúa con un Collider 3D.

Qué combinaciones funcionan#

⚖️ Comparativa · Rigidbody + Collider: qué dispara eventos
Objeto AObjeto BResultado
Rigidbody dinámico + ColliderCollider estáticoColisión ✅
Rigidbody dinámico + ColliderRigidbody dinámico + ColliderColisión ✅
Rigidbody (cualquiera) + Collider triggerColliderTrigger ✅
Collider (sin Rigidbody)Collider (sin Rigidbody)No pasa nada ❌
Rigidbody kinematic + ColliderCollider estático (sin trigger)No hay colisión física, pero sí trigger si uno es trigger

Colliders: formas#

  • Primitivos (Box, Sphere, Capsule): baratos y rápidos. Úsalos siempre que puedas.
  • Mesh Collider: se ajusta a la malla exacta, pero es caro. Para que dos mesh colliders choquen, deben marcarse Convex.
Aproxima con primitivos

Un personaje se representa mejor con un Capsule Collider que con un Mesh Collider de su modelo: más rápido y sin enganchones. Reserva los mesh colliders para escenarios estáticos.

Physics Material: rebote y fricción#

Un Physics Material (asignado al collider) define la fricción y el rebote. Un material con Bounciness alta hace una pelota saltarina; fricción baja, hielo resbaladizo.

Errores frecuentes#

  • Que ninguno de los dos objetos tenga Rigidbody (no se dispara nada).
  • Mezclar componentes 2D y 3D.
  • Esperar OnCollisionEnter cuando el collider es trigger (usarías OnTriggerEnter).
  • Mover un collider estático (sin Rigidbody) cada frame: rendimiento pésimo; ponle Rigidbody kinematic.
  • Abusar de Mesh Colliders donde bastaría un Box o Capsule.

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

Colisión = chocan; trigger = atraviesan y se detecta el paso (marca Is Trigger). Para que salte cualquier evento, ambos necesitan Collider y al menos uno un Rigidbody. Usa OnCollisionEnter/OnTriggerEnter (con sufijo 2D en 2D), prefiere colliders primitivos y filtra con Tags y Layers.

Fuentes y para profundizar