Crear un Canvas de Daño en Unity para Videojuegos

Clase 34 de 60Curso Avanzado de Creación de RPGs con Unity

Resumen

Una implementación clara y efectiva para mejorar el feedback visual: al golpear a un enemigo, aparece un número de daño que sube y desaparece. Con Unity, puedes lograrlo creando un canvas en world space, ajustando su visibilidad con una sorting layer dedicada y preparando un prefab con un script listo para instanciarse en cada colisión.

¿Cómo mostrar números de daño en Unity con canvas en world space?

Configura un canvas que forme parte del mundo, no de la pantalla, para que el número de daño aparezca justo sobre el enemigo. Esto evita confusiones y mantiene la coherencia visual de la escena.

  • Cambia el canvas a modo world space. Se integrará en la escena.
  • Asigna la main camera para que renderice correctamente.
  • Elimina el EventSystem si no hay interacción con el texto.
  • Renombra el objeto a Damage number para una jerarquía ordenada.
  • Reduce el tamaño del canvas a 25×25 píxeles para ajustarlo al enemigo.
  • Define 32×32 píxeles por unidad para mantener la nitidez de tus assets.
  • Centra posiciones en (0, 0) tanto del canvas como del texto para evitar desalineaciones.
  • Usa un placeholder como 999 para visualizar el máximo daño mientras pruebas.

¿Qué ajustes de UI mejoran la legibilidad del daño?

La prioridad es que el número siempre se vea por encima de personajes y fondos. Además, pequeños efectos tipográficos marcan la diferencia en escenas con escala reducida.

  • Crea y asigna una sorting layer llamada UI al canvas. Asegura visibilidad sobre todo.
  • Alinea el texto en centro horizontal y vertical para un posicionamiento limpio.
  • Ajusta el font size a 1 punto si tu juego usa gráficos pequeños.
  • Cambia la fuente a una más acorde al estilo del juego si la tienes, mejorando estética.
  • Define el color del texto según el fondo. Blanco + borde negro suele destacar más.
  • Añade efecto outline: borde sutil en negro. Con texto pequeño, offsets en 0 px funcionan bien.
  • Añade shadow: una sombra con desplazamientos mínimos para dar profundidad sin sobrecargar.

¿Cómo preparar el prefab y el script para instanciar el daño?

Deja listo el objeto para reutilizarlo en cada golpe. Así podrás instanciarlo por código cuando ocurra una colisión y actualizar su texto.

  • Convierte el canvas en prefab arrastrándolo a la carpeta de prefabs.
  • Crea un script de C# llamado Damage Number. Su responsabilidad: mostrar el daño cuando ocurra el impacto.
  • Asigna el script al prefab para que todas las instancias lo hereden.
  • Elimina el objeto de la escena tras crear el prefab: se instanciará dinámicamente.
  • Planifica la instanciación en colisión: al detectar daño, aparece el número, sube y se desvanece.

¿Quieres que sigamos con la parte de código para instanciarlo y actualizar el placeholder con el daño real? Cuéntame cómo tienes estructurado tu sistema de combate y lo adaptamos.

      Crear un Canvas de Daño en Unity para Videojuegos