Si tu objeto no detecta colisiones, puede deberse a una mala configuración de Colliders, Rigidbodies o Layers. Sigue estos pasos para solucionarlo.
✅ Las colisiones se detectan correctamente.
✅ El objeto reacciona a OnCollisionEnter() o OnTriggerEnter().
✅ Se optimiza el comportamiento de físicas en Unity.
🔹 1. Verificar el Collider y Rigidbody
Para que la colisión funcione, ambos objetos deben tener un Collider y, al menos uno, un Rigidbody.
📌 Paso 1: Revisar el Collider
- Selecciona el objeto en la
Jerarquía. - En el
Inspector, verifica que tiene unCollider(BoxCollider,SphereCollider, etc.). - Si usas
OnTriggerEnter(), activaIs Trigger✅.
📌 Paso 2: Verificar el Rigidbody
- Selecciona el objeto que debería moverse o reaccionar a colisiones.
- Añade un
Rigidbody(Add Component > Rigidbody). - Si el objeto no debe caer, activa
Is Kinematic✅. - Si el objeto se mueve rápido, cambia
Collision DetectionaContinuous.
⚠️ Reglas básicas de colisión en Unity:
Objeto 1 (Collider) | Objeto 2 (Collider) | Rigidbody Requerido | OnCollisionEnter() Funciona |
|---|---|---|---|
❌ Is Trigger ❌ | ❌ Is Trigger ❌ | ✅ Uno de los dos debe tener Rigidbody | ✅ Sí |
✅ Is Trigger ✅ | ❌ Is Trigger ❌ | ✅ Uno de los dos debe tener Rigidbody | ✅ Sí (OnTriggerEnter) |
❌ Is Trigger ❌ | ✅ Is Trigger ✅ | ✅ Uno de los dos debe tener Rigidbody | ✅ Sí (OnTriggerEnter) |
🔹 2. Revisar el Código de Detección de Colisiones
Si OnCollisionEnter() o OnTriggerEnter() no se activan, revisa que el código sea correcto.
📌 Código para OnCollisionEnter() (Si Is Trigger está desactivado)
void OnCollisionEnter(Collision collision)
{
Debug.Log("Colisión con: " + collision.gameObject.name);
}
📌 Código para OnTriggerEnter() (Si Is Trigger está activado)
void OnTriggerEnter(Collider other)
{
Debug.Log("Trigger activado con: " + other.gameObject.name);
}
🔹 3. Revisar el Tag del Objeto
Si CompareTag("Player") no está funcionando, revisa el Tag.
📌 Paso 3: Verificar el Tag
- Selecciona el objeto en la
Jerarquía. - En el
Inspector, revisa elTag. - Si
"Player"no existe, agrégalo enAdd Tag > + Playery asígnalo.
🔹 4. Revisar la Layer Collision Matrix
Si el objeto no colisiona con ciertos elementos, es posible que su Layer tenga las colisiones desactivadas.
📌 Paso 4: Configurar Layer Collision Matrix
- Ve a
Edit > Project Settings > Physics. - Busca la
Layer Collision Matrix. - Activa las casillas entre las capas que deben colisionar.
💡 Ejemplo:
Si el Jugador está en "Player" y el Enemigo en "Enemies", activa "Player x Enemies".
🔹 5. Ajustar la Detección de Colisiones (Continuous)
Si el objeto atraviesa otros objetos sin colisión, ajusta la detección de colisión en el Rigidbody.
📌 Paso 5: Configurar Collision Detection
- Selecciona el objeto con
Rigidbody. - En el
Inspector, cambiaCollision DetectiondeDiscreteaContinuous.
💡 Útil para objetos que se mueven rápido.
🎯 Resultado Final
✅ Las colisiones funcionan correctamente.
✅ Los Colliders y Rigidbodies están bien configurados.
✅ El Tag y Layer Collision Matrix están corregidos.
✅ No hay errores de físicas ni colisiones fallidas.

