Barra de Salud de la Interfaz
La clase Player incluye código para actualizar la interfaz de la barra de salud según la salud actual del jugador. Esto se gestiona mediante tres variables: UIHealthTransform
, HealthUIScale
y startingHealthUIWidth
. A continuación se explica cómo se utilizan estas variables para gestionar la barra de salud.
Script para la barra de salud
// Initialization in Start method
private void Start()
{
HealthUIScale = UIHealthTransform.sizeDelta;
startingHealthUIWidth = HealthUIScale.x;
}
// Updating health in GetAttacked method
public void GetAttacked(int damage)
{
if (isDead) return;
health -= damage;
HealthUIScale.x = health * startingHealthUIWidth / 100f;
UIHealthTransform.sizeDelta = HealthUIScale;
if (health <= 0)
{
isDead = true;
animator.SetBool("death", true);
var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
deathParticle.Play();
Destroy(deathParticle.gameObject, 5);
GameManager.instance.FinishGame();
}
}
Inicialización en el método Start
En el método Start
, se captura y almacena el tamaño inicial de la barra de salud.
private void Start()
{
// ... other initializations ...
HealthUIScale = UIHealthTransform.sizeDelta;
startingHealthUIWidth = HealthUIScale.x;
}
Actualización de salud en el método GetAttacked
El método GetAttacked
actualiza la interfaz de la barra de salud cada vez que el jugador recibe daño.
Reducción de salud:
health -= damage;
La salud del jugador se reduce en la cantidad de daño recibido.
Cálculo de la escala de la barra de salud:
HealthUIScale.x = health * startingHealthUIWidth / 100f;
Explicación
Esta línea de código actualiza el ancho de la barra de salud según la salud actual del jugador. Así es como funciona:
Salud:
health
es un valor flotante que representa la salud actual del jugador. Supongamos que varía de 0 a 100.
Ancho inicial de la barra de salud:
startingHealthUIWidth
es un valor flotante que representa el ancho inicial de la barra de salud cuando el jugador tiene la salud completa.
Escalado del ancho de la barra de salud: El objetivo es reducir proporcionalmente el ancho de la barra de salud a medida que disminuye la salud del jugador; Para lograr esto, es necesario calcular qué porcentaje de salud le queda al jugador y luego aplicar ese porcentaje al ancho inicial de la barra de salud.
Cálculo paso a paso
Porcentaje de salud restante:
Dividir la salud actual entre 100 para obtener un valor entre 0 y 1 que representa el porcentaje de salud restante del jugador. Por ejemplo, si la salud del jugador es 75, health / 100f
dará como resultado 0.75
.
Este cálculo traduce el valor de salud a un formato porcentual adecuado para la representación en la interfaz de usuario.
Aplicar porcentaje al ancho inicial:
Multiplicar el porcentaje de salud restante por el ancho inicial de la barra de salud. Por ejemplo, si el startingHealthUIWidth
es 200 (el ancho completo), y la salud del jugador es 75%, el nuevo ancho de la barra de salud será de 150 unidades (0.75 * 200 = 150
).
Mediante este cálculo, el ancho de la barra de salud representa de manera dinámica y precisa la salud actual del jugador, proporcionando una retroalimentación visual clara al jugador.
Actualizar la interfaz de la barra de salud:
UIHealthTransform.sizeDelta = HealthUIScale;
Se actualiza el tamaño del RectTransform
que representa la barra de salud.
Verificación de muerte del jugador:
if (health <= 0)
{
isDead = true;
animator.SetBool("death", true);
var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
deathParticle.Play();
Destroy(deathParticle.gameObject, 5);
GameManager.instance.FinishGame();
}
Si la salud cae a 0 o menos, el jugador se marca como muerto y se activan la animación y las partículas de muerte.
Resumen de la funcionalidad de la barra de salud
Inicialización: El tamaño inicial de la barra de salud se captura al inicio.
Actualización de la barra de salud: Cuando el jugador recibe daño, el valor de salud disminuye y el ancho de la barra de salud se recalcula y actualiza en consecuencia.
Muerte del jugador: Si la salud llega a cero, el jugador se marca como muerto, activando la animación y las partículas de muerte, y finalizando la partida.
¡Gracias por tus comentarios!