Contenu du cours
Jeu de Combat dans Unity
Jeu de Combat dans Unity
Barre de Santé UI
La classe Player comprend du code pour mettre à jour l'interface utilisateur de la barre de santé en fonction de la santé actuelle du joueur. Cette gestion repose sur trois variables : UIHealthTransform
, HealthUIScale
et startingHealthUIWidth
. Vous trouverez ci-dessous une explication de l'utilisation de ces variables pour gérer la barre de santé.
Script pour la barre de santé
// 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();
}
}
Initialisation dans la méthode Start
Dans la méthode Start
, la taille initiale de la barre de vie est capturée et enregistrée.
private void Start()
{
// ... other initializations ...
HealthUIScale = UIHealthTransform.sizeDelta;
startingHealthUIWidth = HealthUIScale.x;
}
Mise à jour de la vie dans la méthode GetAttacked
La méthode GetAttacked
met à jour l'interface utilisateur de la barre de vie chaque fois que le joueur subit des dégâts.
Réduction de la vie :
health -= damage;
La vie du joueur est diminuée du montant des dégâts subis.
Calcul de l'échelle de la barre de vie :
HealthUIScale.x = health * startingHealthUIWidth / 100f;
Explication
Cette ligne de code met à jour la largeur de la barre de vie en fonction de la vie actuelle du joueur. Voici le fonctionnement :
Vie :
health
est un flottant représentant la vie actuelle du joueur. Supposons qu'elle varie de 0 à 100.
Largeur initiale de la barre de vie :
startingHealthUIWidth
est un flottant représentant la largeur initiale de la barre de vie lorsque le joueur a toute sa vie.
Mise à l'échelle de la largeur de la barre de vie : L'objectif est de réduire proportionnellement la largeur de la barre de vie à mesure que la vie du joueur diminue ; Pour cela, il faut calculer le pourcentage de vie restant du joueur puis appliquer ce pourcentage à la largeur initiale de la barre de vie.
Calcul étape par étape
Pourcentage de santé restante :
Diviser la santé actuelle par 100 pour obtenir une valeur comprise entre 0 et 1 représentant le pourcentage de santé restant du joueur. Par exemple, si la santé du joueur est de 75, health / 100f
donnera 0.75
.
Ce calcul traduit la valeur de santé en un format de pourcentage adapté à l'affichage dans l'interface utilisateur.
Appliquer le pourcentage à la largeur initiale :
Multiplier le pourcentage de santé restante par la largeur initiale de la barre de santé. Par exemple, si startingHealthUIWidth
est 200 (la largeur totale), et que la santé du joueur est à 75 %, la nouvelle largeur de la barre de santé sera de 150 unités (0.75 * 200 = 150
).
Grâce à ce calcul, la largeur de la barre de santé représente de manière dynamique et précise la santé actuelle du joueur, offrant ainsi un retour visuel clair au joueur.
Mettre à jour l'UI de la barre de santé :
UIHealthTransform.sizeDelta = HealthUIScale;
La taille du RectTransform
représentant la barre de santé est mise à jour.
Vérification de la mort du joueur :
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 santé tombe à 0 ou moins, le joueur est considéré comme mort, et l'animation de mort ainsi que les particules sont déclenchées.
Résumé des fonctionnalités de l'interface de la barre de santé
Initialisation : La taille initiale de la barre de santé est enregistrée au démarrage.
Mise à jour de la barre de santé : Lorsque le joueur subit des dégâts, la valeur de santé diminue et la largeur de la barre de santé est recalculée et mise à jour en conséquence.
Mort du joueur : Si la santé atteint zéro, le joueur est considéré comme mort, ce qui déclenche l'animation de mort, les particules et termine la partie.
Merci pour vos commentaires !