Menu
CoddyTech

Manger

Leçon 6 sur 14 du cours Jeu Unity : Snake 3D de Coddy.

Le serpent mange lorsque sa tête arrive sur la case de la nourriture. Tous deux occupent des positions à coordonnées entières, donc comparer leurs positions avec == est sans risque : l’opérateur == de Unity sur Vector3 considère deux positions comme égales lorsqu’elles sont distantes de moins de 0.00001, et l’ajout de cases entières ne crée jamais un écart aussi petit.

Le serpent sait quand il avance ; le GameManager sait où se trouve la nourriture et conserve le score. Ainsi, après chaque déplacement, le serpent pose la question et le GameManager répond : IsFood(cell) renvoie un bool, et Eat() ajoute un point et déplace la nourriture. Le serpent accède au GameManager via une Instance statique, le singleton que tu as découvert dans le parcours C# pour Unity.

Vérifie la case où la tête est arrivée, après le déplacement. On ramasse une clé sur une grille de la même façon :

transform.position = next;
if (key.position == transform.position)
{
    keysHeld++;
    key.gameObject.SetActive(false);
}
challenge icon

Défi

Moyen

Dans GameManager :

  1. Ajoute public static GameManager Instance;, définis-le dans Awake() et ajoute private int score;.
  2. Écris public bool IsFood(Vector3 cell) : vrai lorsque cell correspond à la position de la nourriture.
  3. Écris public void Eat() : ajoute 1 à score et appelle MoveFood().

Dans Snake, à la fin de Step(), après que la tête a bougé : si la case de la tête contient de la nourriture, appelle Eat().

Appuie sur Play et dirige le serpent vers la nourriture, puis appuie sur Check.

Essayez vous-même

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public Snake snake;
    public GameObject foodPrefab;
    private Transform food;

    void Start()
    {
        food = Instantiate(foodPrefab).transform;
        MoveFood();
    }

    void MoveFood()
    {
        int x = Random.Range(-snake.edge, snake.edge + 1);
        int z = Random.Range(-snake.edge, snake.edge + 1);
        food.position = new Vector3(x, 0f, z);
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Jeu Unity : Snake 3D