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 Detection
aContinuous
.
⚠️ 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 > + Player
y 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 Detection
deDiscrete
aContinuous
.
💡 Ú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.
