Pequeños ajustes marcan gran diferencia. Aquí verás cómo corregir la detección de suelo con un raycast en superficies irregulares y cómo visualizar vida y maná privados con SerializedField para depurar mejor. Además, se identifica que no está contemplada la muerte del jugador cuando la vida llega a cero.
¿Cómo corregir el raycast de salto en Unity?
Un raycast demasiado corto puede fallar al detectar el suelo en rocas u objetos con colliders complejos. La solución práctica: exponer la distancia como variable y ajustarla desde el editor hasta encontrar el valor estable.
El valor fijo 1.5 no alcanza el suelo en rocas irregulares.
Pruebas rápidas: 1.6 y 1.7 aún fallan. 1.8 mejora. 2.0 y hasta 2.5 aseguran margen.
Beneficio: colisiones más inteligentes sin depender del collider exacto del suelo.
¿Qué pasos aplicar para el ajuste del raycast?
Crear una variable pública o serializada: jumpRayCastDistance.
Sustituir el 1.5 en Debug.DrawRay dentro de Update.
Sustituir el 1.5 en Physics2D.Raycast dentro del método que comprueba suelo.
Probar valores en tiempo de ejecución hasta que el personaje no se quede enganchado.
publicclassPlayerController:MonoBehaviour{[SerializeField]privatefloat jumpRayCastDistance =1.5f;voidUpdate(){// Visualiza el rayo hacia abajo con la distancia ajustable. Debug.DrawRay(transform.position, Vector2.down * jumpRayCastDistance, Color.red);}boolIsTouchingTheGround(){// Usa la misma distancia para la comprobación real.return Physics2D.Raycast(transform.position, Vector2.down, jumpRayCastDistance);}}
¿Cuándo conviene usar un Polygon Collider 2D?
Cuando un Box Collider no se ajusta bien a la forma, Polygon Collider 2D ofrece mejor precisión. Unity lo divide en fragmentos convexos para cálculos fiables.
Un polígono es convexo si la línea entre dos puntos queda dentro del contorno.
Mayor precisión implica más coste computacional que un cuadrado o un círculo.
Úsalo cuando la justicia del juego lo exija: colisiones “sentidas” como correctas.
Los hijos de un prefab en escena no siempre heredan cambios del padre: revisa y actualiza manualmente.
Incluso el personaje con Capsule Collider podría usar Polygon Collider, según necesidad.
¿Cómo visualizar vida y maná privados con SerializedField?
Si las variables son privadas y no aparecen en el editor, marca con SerializedField para inspeccionarlas sin exponerlas públicamente. Es ideal para depurar la barra de vida y el maná durante el gameplay.
Ventaja: ver valores en el editor sin romper el encapsulamiento.
Facilita validar cuánto daño recibe el jugador al contacto con enemigos.
publicclassPlayerController:MonoBehaviour{[SerializeField]privateint health;// puntos de vida visibles en el editor.[SerializeField]privateint mana;// puntos de maná visibles en el editor.}
¿Qué observar al probar el daño del enemigo?
Aumentar la velocidad del enemigo acelera la prueba del daño.
La barra de vida desciende golpe a golpe de forma visible.
Con SerializedField, se confirma la vida restante del jugador en el inspector.
¿Cómo gestionar la muerte del jugador al llegar a cero?
Actualmente, la vida puede bajar de cero y el juego sigue en marcha. No se activa ninguna lógica de muerte: el jugador permanece activo pese a tener valores negativos.
Estado detectado: la barra deja de cambiar y la vida interna sigue bajando bajo cero.
Falta contemplar el caso de muerte: detener control del jugador, feedback visual o reinicio.
Próximo paso: implementar la gestión de muerte tras alcanzar 0 de vida.
¿Te funcionó el ajuste de la distancia del raycast o preferiste Polygon Collider 2D? Comparte tus resultados, valores que te sirvieron y consejos para optimizar colisiones en tus niveles.