Menu
CoddyTech

Barres de santé

Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 10 sur 56.

Une barre qui se vide est une image d’interface utilisateur dont le Type d’image est réglé sur Remplie. Ce réglage apparaît une fois que l’Image possède une Image source ; avec None, l’Inspecteur le masque. La Méthode de remplissage Horizontal avec une Origine de remplissage Gauche réduit la barre vers son extrémité gauche, et fillAmount, compris entre 0 et 1, indique quelle partie est dessinée. Une image sombre placée derrière elle montre la partie vide. Unity borne fillAmount : 1.4 dessine donc une barre pleine et -0.2 une barre vide.

fillAmount correspond à la part de santé restante : la santé divisée par son maximum. Avec des champs int, il s’agit d’une division entière, et 350 / 500 vaut 0 ; convertis donc d’abord un des deux côtés en float. Image se trouve dans UnityEngine.UI. Cette barre de boss est mise à jour après chaque coup :

public Image bossBar;
public int bossMaxHp = 500;
private int bossHp = 500;

public void Hit(int damage)
{
    bossHp = Mathf.Max(bossHp - damage, 0);
    bossBar.fillAmount = (float)bossHp / bossMaxHp;   // 350 / 500 = 0.7
}

La couleur de la barre peut aussi suivre la santé : bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); elle est verte lorsque la barre est pleine et devient rouge à mesure qu’elle se vide.

challenge icon

Défi

Facile

La chevalière possède un bouclier qui absorbe les dégâts avant que sa santé ne soit touchée. Les flèches la déplacent (Mover.cs), et les pics lui infligent 30 dégâts lorsqu’elle marche dessus (Spikes.cs). Écris Knight.cs ; dans la scène, les champs healthBar et shieldBar sont vides :

  • hp commence à maxHp (80) et shield à maxShield (40), et les deux barres commencent à plein.
  • TakeDamage(int amount) : le bouclier absorbe autant de dégâts qu’il lui en reste, et le reste est retiré de hp, qui ne descend jamais en dessous de 0.
  • Après chaque coup, les deux barres affichent ce qu’il reste : shieldBar le bouclier restant sur maxShield, healthBar les hp restants sur maxHp.

Appuie sur Play, marche plusieurs fois sur les pics, puis appuie sur Check.

Essayez vous-même

using UnityEngine;
using UnityEngine.UI;

public class Knight : MonoBehaviour
{
    public Image healthBar;
    public Image shieldBar;
    public int maxHp = 80;
    public int maxShield = 40;
    private int hp;
    private int shield;

    void Start()
    {
        hp = maxHp;
        shield = maxShield;
        // Remplir les deux barres
    }

    public void TakeDamage(int amount)
    {
        // Le bouclier absorbe autant de dégâts que possible ; le reste est déduit de hp, sans descendre en dessous de 0. Ensuite, afficher les deux barres.
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Créer de vrais jeux