Menu
CoddyTech

Nourriture

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

La nourriture se trouve sur une case aléatoire. Les cases sont des nombres entiers, donc choisis x et z avec la version int de Random.Range. Avec des entiers, la valeur maximale est exclue : Random.Range(1, 7) lance un dé, de 1 à 6, jamais 7. Pour inclure un nombre, demande le nombre qui le suit.

Avec des arguments de type float, Random.Range renvoie n’importe quel nombre compris entre les deux, par exemple 3.62, qui ne correspond pas au milieu d’une case ; le serpent ne rencontrerait donc jamais la nourriture. Un coffre sur une grille de 10 par 10, avec des cases de 0 à 9 :

int row = Random.Range(0, 10);      // de 0 à 9
int column = Random.Range(0, 10);
chest.position = new Vector3(column, 0f, row);

Le plateau ne contient qu’un seul aliment à la fois. Le jeu le crée donc une fois, dans Start(), puis le déplace chaque fois qu’il lui faut un nouvel emplacement. GameManager gère la nourriture et lit la taille du plateau depuis le champ edge du serpent, par l’intermédiaire d’un champ snake.

challenge icon

Défi

Moyen

Complète GameManager. La scène définit son snake sur le Snake de la tête et son foodPrefab sur une sphère rouge.

  1. Ajoute public Snake snake;, public GameObject foodPrefab; et private Transform food;.
  2. Dans Start(), instancie foodPrefab, conserve son Transform dans food et appelle MoveFood().
  3. Écris void MoveFood() : cette méthode place food sur une cellule aléatoire, avec x et z allant chacun de -snake.edge à snake.edge, et y égal à 0.

Appuie sur Play et trouve la nourriture sur le plateau, puis appuie sur Check.

Essayez vous-même

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // Gère le jeu : la nourriture, le score et la fin de partie. Le chapitre 2 complète cette classe.
}
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