Unity - UFO 2D

Compter les pépites et afficher le score

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 :

PlayerController.cs
Sélectionnez
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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2016 Unity Technologies. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.