Saltar al contenido

🎮 Cómo Solucionar el Problema de un Objeto que No Reacciona a Colisiones en Unity

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

  1. Selecciona el objeto en la Jerarquía.
  2. En el Inspector, verifica que tiene un Collider (BoxCollider, SphereCollider, etc.).
  3. Si usas OnTriggerEnter(), activa Is Trigger ✅.

📌 Paso 2: Verificar el Rigidbody

  1. Selecciona el objeto que debería moverse o reaccionar a colisiones.
  2. Añade un Rigidbody (Add Component > Rigidbody).
  3. Si el objeto no debe caer, activa Is Kinematic ✅.
  4. Si el objeto se mueve rápido, cambia Collision Detection a Continuous.

⚠️ Reglas básicas de colisión en Unity:

Objeto 1 (Collider)Objeto 2 (Collider)Rigidbody RequeridoOnCollisionEnter() Funciona
Is TriggerIs Trigger✅ Uno de los dos debe tener Rigidbody✅ Sí
Is TriggerIs Trigger✅ Uno de los dos debe tener Rigidbody✅ Sí (OnTriggerEnter)
Is TriggerIs 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

  1. Selecciona el objeto en la Jerarquía.
  2. En el Inspector, revisa el Tag.
  3. Si "Player" no existe, agrégalo en Add 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

  1. Ve a Edit > Project Settings > Physics.
  2. Busca la Layer Collision Matrix.
  3. 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

  1. Selecciona el objeto con Rigidbody.
  2. En el Inspector, cambia Collision Detection de Discrete a Continuous.

💡 Ú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.

Etiquetas:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad