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.
Défi
FacileLa 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 :
hpcommence àmaxHp(80) etshieldà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é dehp, qui ne descend jamais en dessous de 0.- Après chaque coup, les deux barres affichent ce qu’il reste :
shieldBarle bouclier restant surmaxShield,healthBarles hp restants surmaxHp.
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.
}
}
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
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque