IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 ni 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.