Si tu objeto con BoxCollider detecta colisiones incorrectas o tiene comportamientos inesperados, sigue estos pasos para solucionarlo.
✅ Corrige colisiones fantasma o erróneas.
✅ Evita que objetos atraviesen otros sin motivo.
✅ Optimiza el rendimiento y la precisión de la física.
🔹 1. Verificar la Escala del Objeto (Transform > Scale)
Un BoxCollider puede comportarse de manera extraña si el objeto tiene una escala negativa o una escala no uniforme.
📌 Cómo Verificarlo:
- Selecciona el objeto en la
Jerarquía(Hierarchy). - Ve al
Inspectory revisaTransform > Scale. - Si los valores de
Scaleson negativos o muy pequeños (< 0.1), cámbialos a positivos y razonables (1.0).
⚠️ Problema: Unity no admite BoxCollider con escala negativa, lo que puede provocar errores.
🔹 2. Ajustar el Tamaño del BoxCollider Manualmente
Si el BoxCollider tiene un tamaño incorrecto, ajusta su propiedad Size manualmente en el Inspector.
📌 Cómo Ajustarlo:
- Selecciona el objeto en la Jerarquía.
- En el
Inspector, ve alBoxCollider. - Modifica
Sizeen lugar de cambiar la escala del objeto. - Si el
BoxColliderestá desalineado, ajustaCenter.
💡 Consejo: Usa Gizmos (Shift + G) en la escena para visualizar el BoxCollider.
🔹 3. Revisar los Rigidbodies de los Objetos
Para que las colisiones funcionen correctamente, al menos uno de los objetos en colisión debe tener un Rigidbody.
📌 Cómo Configurarlo:
- Selecciona el objeto que debe moverse (por ejemplo, el
Jugador). - En el
Inspector, haz clic enAdd Component > Rigidbody. - Si no quieres que el objeto sea afectado por la gravedad, activa
Is Kinematic.
⚠️ Problema: Sin Rigidbody, Unity puede no detectar las colisiones correctamente.
🔹 4. Usar Is Trigger si el Objeto Solo Debe Detectar Colisiones
Si el objeto solo debe detectar la colisión sin bloquear el paso del jugador, usa Is Trigger.
📌 Cómo Activarlo:
- Selecciona el objeto en la
Jerarquía. - En el
Inspector, marcaIs Triggeren elBoxCollider. - Usa
OnTriggerEnter()en lugar deOnCollisionEnter()en tu código.
💡 Ejemplo de Código con OnTriggerEnter():
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log("El jugador ha entrado en la zona.");
}
}
🔹 5. Evitar Que los Objetos Atraviesen las Colisiones (Continuous Collision Detection)
Si los objetos atraviesan colisiones en movimiento rápido, ajusta la detección de colisión en el Rigidbody.
📌 Cómo Configurarlo:
- Selecciona el objeto en la
Jerarquía(Ejemplo:Jugador). - Ve al
Inspectory selecciona elRigidbody. - Cambia
Collision DetectiondeDiscreteaContinuous.
⚠️ Problema: La configuración Discrete puede hacer que los objetos atraviesen colisiones a alta velocidad.
🔹 6. Ajustar la Layer Collision Matrix para Evitar Colisiones Inesperadas
Si un objeto está colisionando con cosas que no debería, usa la Layer Collision Matrix para evitar colisiones innecesarias.
📌 Cómo Ajustarlo:
- Ve a
Edit > Project Settings > Physics. - Busca la
Layer Collision Matrix. - Desactiva las casillas de colisión entre capas que no deben colisionar.
💡 Ejemplo:
- Si tienes una capa
"Enemigos"y"Paredes", puedes evitar que los enemigos colisionen con las paredes desactivando"Enemigos x Paredes".
🔹 7. Alternativa: Usar MeshCollider en Lugar de BoxCollider
Si el objeto tiene una forma compleja y el BoxCollider no encaja bien, usa un MeshCollider.
📌 Cómo Cambiarlo:
- Selecciona el objeto en la Jerarquía.
- Elimina el
BoxCollider. - Añade
MeshCollider(Add Component > MeshCollider). - Si el objeto es dinámico, marca
Convex.
⚠️ Nota: MeshCollider consume más rendimiento que BoxCollider.
🎯 Resultado Final
✅ Las colisiones se detectan correctamente.
✅ Los objetos no atraviesan colisiones inesperadas.
✅ Los BoxCollider tienen el tamaño adecuado y sin escala negativa.
✅ Se optimiza la detección de colisiones con Continuous y Layer Collision Matrix.

