Le plateau
Leçon 1 sur 14 du cours Jeu Unity : Snake 3D de Coddy.
Dans ce cours, tu vas créer Snake en 3D : un serpent composé de cubes sur un plateau de 15 sur 15, vu de dessus. Il avance d’une case à la fois, tourne avec les flèches ou les touches WASD, mange de la nourriture, grandit et meurt s’il touche les murs ou sa propre queue. Deux scripts le font fonctionner : Snake sur la tête, et GameManager, qui reste vide jusqu’à l’arrivée de la nourriture dans le chapitre suivant.
Les cases font une unité de large et sont centrées sur des nombres entiers : x et z vont de -7 à 7, et chaque case se trouve à y 0. Le serpent ne glisse jamais entre les cases. Il avance d’une case entière à chaque tick, un rythme fixe, par exemple toutes les 0,15 seconde, et reste immobile entre deux ticks.
Dans Unity, un rythme est géré par un minuteur : ajoute Time.deltaTime à chaque image, et lorsque le minuteur atteint l’intervalle, agis et soustrais l’intervalle. Cette balise clignote une fois par seconde :
public Light beacon;
public float interval = 1f;
private float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
timer -= interval;
beacon.enabled = !beacon.enabled;
}
}Soustraire l’intervalle, au lieu de remettre le minuteur à 0, conserve la partie de l’image qui a dépassé l’intervalle, afin que le rythme ne prenne pas de retard.
Défi
FacileLa tête est un cube vert sur la cellule (-3, 0, 0). Snake possède tick, 0.15 seconde, et direction, Vector3.right.
- Ajoute un
private float timer;. - Dans
Update(), incrémente le minuteur deTime.deltaTime. Lorsqu’il atteinttick, soustraistickau minuteur et appelleStep(). - Dans
Step(), déplace la tête d’une cellule dans la direction dedirection.
Appuie sur Play et regarde la tête avancer vers la droite. Pour l’instant, elle sort du plateau : les murs arrivent dans la leçon 4. Appuie ensuite sur Check.
Essayez vous-même
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // secondes entre deux pas
private Vector3 direction = Vector3.right;
void Update()
{
// Toutes les tick secondes, effectuer un Step()
}
void Step()
{
// Déplacer la tête d'une cellule dans la direction direction
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.