Programación de Texto de Daño en Unity
Clase 35 de 60 • Curso Avanzado de Creación de RPGs con Unity
Resumen
¿Cómo se utiliza el texto para mostrar el daño en Unity?
En el desarrollo de videojuegos en Unity, mostrar el daño infligido o recibido de manera visual puede mejorar significativamente la experiencia del jugador. Aprovechar componentes existentes para hacer esto de manera eficiente es clave. Aquí exploramos cómo un simple texto puede facilitar esta tarea reutilizando un asset en múltiples escenarios.
Para plasmar el daño en la pantalla, es esencial que el flujo de trabajo sea versátil. Así, se puede aplicar tanto para documentar puntos de vida curados, como el daño infligido al protagonista por un enemigo. Se trata de manipular el elemento de texto de manera que suba ligeramente hasta desaparecer, creando una atractiva animación.
¿Cómo configurar los elementos necesarios para mostrar el daño?
Un buen punto de inicio es el script DamageNumber
, el cual debe contar con ciertas propiedades para poder ser modificado adecuadamente:
-
PublicFloat DamageSpeed
: controla la velocidad a la que el texto se mueve verticalmente en la pantalla. -
PublicFloat DamagePoints
: es el número que el script debe mostrar, simbolizando el daño infligido. -
Importación y acceso a componentes de texto: utiliza
using UnityEngine.UI
para poder acceder y manipular elementos de texto en Unity, específicamente declarandoPublicText DamageText
.
La metodología en los scripts permite definir y mostrar el movimiento del texto, estableciendo propiedades como la posición y su velocidad.
¿Cómo aplicar las propiedades y configurar el Prefab?
Cuando se configuran las propiedades, es necesario asignarlas adecuadamente a los objetos en el editor:
- Asignar el texto al objeto Prefab y configurar la velocidad de movimiento.
- Incorporar y visualizar el objeto en el editor para asegurar que los cambios se reflejen correctamente.
A través de la función Update
, se obtiene el siguiente código para gestionar y actualizar la posición del texto de daño:
// Convirtiendo los puntos de daño a texto
DamageText.text = DamagePoints.ToString();
// Actualizando la posición del texto
this.transform.position = new Vector3(
this.transform.position.x,
this.transform.position.y + DamageSpeed * Time.deltaTime,
this.transform.position.z);
Este script mantiene el texto en movimiento hacia arriba hasta que desaparece.
¿Cómo administrar la eliminación del texto de daño?
Una vez que el daño se ha mostrado visualmente, es esencial eliminar este texto para no saturar la pantalla. Para lograr esto, el script destroyAfterTime
viene al rescate:
// Variable para el tiempo de destrucción
public float timeToDestroy;
// En Update, disminuimos este valor
timeToDestroy -= Time.deltaTime;
// Destruir el objeto una vez que el tiempo se agota
if (timeToDestroy <= 0) {
Destroy(gameObject);
}
¿Cómo integrar el texto de daño con otros elementos del juego?
La integración del texto de daño dentro del contexto del juego involucra la instancia dinámica en el punto de impacto. Esto se realiza mediante el script del arma, weaponDamage
:
// Instanciación del objeto de daño
GameObject clon = Instantiate(damageNumber, hitPoint.transform.position, Quaternion.Euler(Vector3.zero)) as GameObject;
// Modificación del daño mostrado
clon.GetComponent<DamageNumber>().DamagePoints = intDamage;
Esta implementación se traduce en feedback visual inmediato cada vez que el personaje inflige daño. Siguiendo este patrón, se puede también mostrar el daño recibido, y aplicar cambios de color para representar distintas acciones (por ejemplo, daño recibido en rojo).
Esta programación dinámica y visual no solo embellece la experiencia de juego, sino que también adopta prácticas de desarrollo versátiles y reutilizables que pueden ser aplicadas en diversas partes del desarrollo de videojuegos.