I. Introduction▲
Cette série explique pas à pas la création d'un jeu 2D dans lequel un vaisseau collecte des pépites d'or.
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Unity - UFO 2D - Compter les pépites et afficher le score
III. Résumé▲
Dans cette vidéo, vous allez gérer le décompte des pépites d'or et afficher le score.
III-A. Décompte des pépites▲
Dans le script, il est nécessaire d'ajouter une variable pour garder en mémoire le nombre de pépites ramassées. La variable est incrémentée à travers la fonction OnTriggerEnter2D().
III-B. Afficher du texte à l'écran▲
Pour afficher du texte à l'écran, il faut ajouter un objet « Text » (nommé « CountText » et un second, pour le texte de victoire, nommé « WinText ») dans notre scène. Lors de l'ajout de cet élément, Unity ajoute un parent « Canvas » permettant la bonne disposition des éléments de l'interface utilisateur. Configurez les propriétés de l'objet afin de placer le texte suivant votre envie.
Le texte affiché à l'écran est défini dynamiquement à travers le script :
using
UnityEngine;
using
System.
Collections;
// EN ajoutant ceci, vous pouvez accéder aux outils dans l'espace de nommage UI dont les outils Text.
using
UnityEngine.
UI;
public
class
CompletePlayerController :
MonoBehaviour {
public
float
speed;
// Variable à virgule flottante pour sauvegarder la vitesse du joueur
public
Text countText;
// Stocke une référence sur le composant texte qui affichage le nombre d'éléments ramassés.
public
Text winText;
// Stocke une référence sur le composant texte permettant d'afficher le message 'You win'.
private
Rigidbody2D rb2d;
// stocke une référence vers le composant Rigidbody2D nécessaire pour utiliser la physique 2D.
private
int
count;
// Entier pour stocker les objets ramassés.
// Initialisation
void
Start
(
)
{
// Récupère et conserve la référence vers le composant Rigidbody2D afin de pouvoir y accéder plus tard.
rb2d =
GetComponent<
Rigidbody2D>
(
);
// Initialise le compteur à zéro.
count =
0
;
// Initialise winText à vide car nous n'avons pas encore gagné.
winText.
text =
""
;
// Appelle la fonction SetCountText qui met à jour le texte avec la valeur du compteur.
SetCountText (
);
}
// La fonction FixedUpdate() est appelée à intervalle régulier et est indépendante du nombre d'images par seconde. Placez votre code physique ici.
void
FixedUpdate
(
)
{
// Stocke l'entrée horizontale dans la variable moveHorizontal.
float
moveHorizontal =
Input.
GetAxis (
"Horizontal"
);
// Stocke l'entrée verticale dans la variable moveVertical.
float
moveVertical =
Input.
GetAxis (
"Vertical"
);
// Utilise les deux nombres pour créer un Vector2.
Vector2 movement =
new
Vector2 (
moveHorizontal,
moveVertical);
// Appelle la fonction AddForce() du Rigidbody2D rb2d avec le mouvement multiplié par la vitesse.
rb2d.
AddForce (
movement *
speed);
}
// La fonction OnTriggerEnter2D() est appelée chaque fois qu'un objet recouvre le déclencheur.
void
OnTriggerEnter2D
(
Collider2D other)
{
// Vérifie si le paramètre de la fonction est marqué "PickUp", si c'est le cas...
if
(
other.
gameObject.
CompareTag
(
"PickUp"
))
// ... et désactive l'objet avec lequel on est en collision.
other.
gameObject.
SetActive
(
false
);
// ajoute 1 au compteur.
count =
count +
1
;
// Met à jour le texte affiché.
SetCountText (
);
}
// Cette fonction met à jour le texte affichant le nombre d'objets ramassés et affiche le message de victoire si nous les avons tous.
void
SetCountText
(
)
{
// Définit le texte de l'objet countText object à "Count: " suivi du nombre stocké dans notre variable.
countText.
text =
"Count: "
+
count.
ToString (
);
// Vérifie si nous avons ramassé les 12 objets. Si c'est le cas...
if
(
count >=
12
)
//... définit le texte de l'objet object à "You win!"
winText.
text =
"You win!"
;
}
}
IV. Ressources▲
Vous pouvez télécharger les ressources pour ce projet sur l'Asset Store de Unity.
V. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.