Apparue dans certains des premiers jeux vidéo du monde, la santé est une mécanique commune qui persiste dans beaucoup des titres les plus populaires d’aujourd’hui. La santé permet d’employer des mécanismes de combat complexes, de créer une progression du joueur et de rendre votre jeu plus intuitif. Mais comment ajouter un système de santé à vos propres jeux ?
Unity3D permet d’ajouter facilement des éléments d’interface utilisateur 2D à des jeux 3D. C’est donc l’endroit idéal pour commencer à explorer les barres de santé pour la première fois.
Ce que vous allez apprendre
À première vue, ce projet ne semble pas compliqué. Pourtant, vous devrez comprendre plusieurs concepts de codage clés d’Unity3D pour créer une barre de santé fonctionnelle. Cela signifie qu’il y a beaucoup à apprendre au cours de ce projet, y compris :
- Comment créer des éléments/prints d’interface utilisateur en 2D dans Unity3D.
- Comment modifier les composants d’un objet de jeu avec du code.
- Comment partager des variables entre scripts dans Unity3D.
Étape 1 : Configuration de votre scène
Avant de commencer à coder votre barre de santé, vous avez besoin d’une scène avec un modèle de joueur auquel elle s’appliquera. Pour commencer, vous pouvez suivre notre guide du contrôleur de personnage Unity3D basé sur la physique pour créer un modèle de joueur avec des contrôles de base.
Avec une scène et un modèle de joueur en place, il est temps d’ajouter un élément d’interface utilisateur. Cliquez avec le bouton droit de la souris dans la fenêtre Hiérarchie et sélectionnez UI > ; Image. Cela va créer deux nouveaux éléments dans votre hiérarchie : un objet parent Canvas et un objet enfant Image. Changez le nom de l’objet enfant en Healthbar. Choisissez une largeur, une hauteur et une position pour votre barre de santé à l’aide de l’inspecteur.
Vous pouvez ajouter une image d’interface utilisateur légèrement plus grande, dont la couleur est réglée sur le noir, pour servir de fond ou de bordure à la barre de santé. Assurez-vous simplement qu’elle se trouve au-dessus de la barre de santé dans la hiérarchie afin qu’elle s’affiche derrière elle.
Cet élément d’interface utilisateur sert de base à votre barre de santé, mais vous devez également disposer d’un sprite pour l’animer. Allez dans le volet Projet, faites un clic droit et sélectionnez Créer > ; 2D > ; Sprites > ; Carré.
Sélectionnez la barre de santé dans la hiérarchie et faites glisser le sprite que vous venez de créer dans la boîte de sélection de l’image source dans l’inspecteur. Vous pouvez également modifier Type d’image à remplir, Méthode de remplissage à Horizontal, et Remplir l’origine à gauche. Maintenant, si vous exécutez votre jeu et utilisez la fonction Montant du remplissage En glissant, vous devriez voir votre barre de santé diminuer et augmenter.
Si vous ne voyez pas le menu des composants de l’interface utilisateur, rendez-vous à l’adresse suivante Fenêtre > ; Gestionnaire de paquetset vérifiez que le pack 2D est installé.
Étape 2 : Ajouter une variable de santé
Il n’y aurait pas beaucoup d’intérêt à créer une barre de santé sans une variable de santé en place pour dicter son état. Les autres scripts doivent pouvoir accéder à cette variable, et il est logique de la placer à un endroit central. Ajoutez-la au script de contrôle des personnages en tant que variable publique :
public float playerHealth = 1.0f;
L’utilisation d’un flottant pour cette variable signifie que vous pouvez facilement représenter n’importe quel pourcentage de 0 à 100, pour correspondre à l’image de la barre de santé de l’interface utilisateur de la variable Fill Amount. Par exemple, une santé du joueur de 0,5f correspond à 50 % de la largeur de la barre de santé.
Étape 3 : Partager des variables entre les scripts dans Unity
Les variables fonctionnent généralement dans leurs propres fonctions et scripts. Cela les rend inaccessibles à partir d’autres fonctions et scripts, à moins que vous ne preniez des mesures pour indiquer au code où trouver les variables avec lesquelles vous voulez travailler.
Commencez par créer un nouveau fichier script appelé Health pour y placer le code. Vous pouvez glisser et déposer ce script sur l’élément d’interface utilisateur Healthbar créé à la première étape. Le code suivant est placé dans la fonction void Update().
Ce processus commence par la recherche de l’objet du jeu qui possède la variable. Dans ce cas, il s’agit de l’objet Character_Model :
GameObject Character_Model = GameObject.Find("Character_Model");
Ensuite, il est temps de trouver le composant de script qui contient la variable avec laquelle vous devez travailler.
Character_Control character_Control = Character_Model.GetComponent();
Et enfin, vous pouvez extraire la variable spécifique que vous recherchez. Dans ce cas, il s’agit de la variable playerHealth que vous avez ajoutée au contrôleur de votre personnage. Assignez-la à une variable flottante dans le script actuel appelée currentHealth.
currentHealth = character_Control.playerHealth;
Il suffit de quelques lignes de code pour obtenir la variable dont vous avez besoin, et vous pouvez appliquer cette méthode chaque fois que vous avez besoin d’accéder à la santé de votre joueur. Votre code devrait ressembler à ceci une fois que vous aurez terminé :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Health : MonoBehaviour
{
public float currentHealth;
void Start()
{
}
void Update()
{
GameObject Character_Model = GameObject.Find("Character_Model");
Character_Control character_Control = Character_Model.GetComponent();
currentHealth = character_Control.playerHealth;
}
}
Étape 4 : Programmer l’objet de jeu Barre de santé de l’interface utilisateur
Maintenant que vous avez créé un élément d’interface utilisateur de barre de santé et que vous avez accès à la variable de santé du joueur, il est temps de les faire fonctionner ensemble. Pour commencer, ajoutez une variable statique privée qui contiendra le composant image de votre barre de santé :
private static Image Healthbar;
Vous pouvez ensuite affecter le composant image à cette variable dans la fonction void Start(), qui ne s’exécute qu’une fois.
Healthbar = GetComponent();
Maintenant que vous avez toutes vos variables en place, vous pouvez utiliser le code de l’étape précédente pour définir la largeur de remplissage de l’objet UI de la barre de santé. Vous n’avez pas besoin d’effectuer de conversion ici ; la santé du joueur et la quantité de remplissage de la barre de santé sont toutes deux des variables flottantes.
Healthbar.fillAmount = currentHealth;
Avec ce code en place, votre barre de santé se remplira en fonction de la variable de santé trouvée dans le code Character_Control. C’est un peu ennuyeux, cependant, et il faudrait vraiment y mettre de la couleur.
Commencez par ajouter une nouvelle couleur pour que la barre de santé soit d’un vert clair lorsque le joueur a beaucoup de santé.
Color greenHealth = new Color(0.6f, 1, 0.6f, 1);
Ensuite, ajoutez une instruction if pour vérifier si la santé du joueur est supérieure à 0.3f, c’est à dire 30% ou plus. Si elle est supérieure à 0.3f, la barre de santé sera de la couleur que vous venez d’ajouter. Si elle est inférieure à 0,3f, mettez la barre de santé en rouge.
if (currentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} else {
Healthbar.color = Color.red;
}
Étape 5 : Test du code
Comme vous pouvez le voir dans le code complet ci-dessous, ce projet est assez simple quand il est complet. Mais bien sûr, il faut pouvoir tester son code.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Health : MonoBehaviour
{
private static Image Healthbar;
public float currentHealth;
void Start()
{
Healthbar = GetComponent();
}
void Update()
{
GameObject Character_Model = GameObject.Find("Character_Model");
Character_Control character_Control = Character_Model.GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;
Color greenHealth = new Color(0.6f, 1, 0.6f, 1);
if (currentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} else {
Healthbar.color = Color.red;
}
}
}
Vous pouvez ajouter une seule ligne de code au script Character_Control pour rendre les tests possibles. Chaque fois que le joueur appuie sur la touche W pour avancer, il retire une petite quantité de santé. Vous pouvez ajouter le même code à tout script ayant accès à la variable playerHealth pour obtenir les mêmes résultats :
playerHealth -= 0.001f;
Vous pouvez également envisager d’ajouter des ressources uniques à votre projet Unity. Vous pouvez trouver des ressources Unity gratuites sur le Web, ce qui vous permet d’animer votre projet sans avoir à dépenser d’argent.
Construction de barres de santé dans Unity3D
Votre jeu commence à prendre forme maintenant que vous avez mis en place une barre de santé pour votre personnage. Il y a encore beaucoup de travail à faire, mais vous devriez maintenant avoir certaines des compétences clés dont vous avez besoin pour commencer à faire de réels progrès. Bien sûr, cela ne fait jamais de mal de lire d’autres guides.