Le plateau
Leçon 1 sur 14 du cours Jeu Unity : Snake 3D de Coddy.
Dans ce cours, tu crées 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, grandit et meurt lorsqu’il touche les murs ou sa propre queue. Snake contrôle la tête ; GameManager reste vide jusqu’à l’arrivée de la nourriture. Le bouton « Jouer » lance le jeu ; le bouton « Vérifier » évalue ton code.
Les cases ont une largeur d’une unité et sont placées sur des nombres entiers de -7 à 7. Le serpent ne glisse jamais : il saute d’une case entière à chaque tick, un battement régulier, et reste immobile entre les battements. Un battement fonctionne avec un minuteur : ajoute Time.deltaTime à chaque image, et lorsqu’il atteint la durée du battement, agis et soustrais cette durée :
timer += Time.deltaTime;
if (timer >= 0.5f)
{
timer -= 0.5f;
Step();
}Soustraire la durée du battement, au lieu de régler le minuteur sur 0, conserve la fraction d’image qui a dépassé cette durée, afin que le battement ne prenne pas de retard. Utilise le champ tick, pas un nombre.
Défi
FacileFais avancer la tête d’une case à chaque tick.
- Dans
Snake, ajouteprivate float timer; - Dans
Update(), ajouteTime.deltaTimeà timer ; lorsquetimer >= tick, soustrais-lui tick et appelleStep(). - Dans
Step(), ajoutedirectionàtransform.position.
Appuie sur « Jouer » : la tête avance vers la droite, case par case, et sort du plateau pour le moment. Puis clique sur « Vérifier ».
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 case dans la direction direction
}
}
Toutes les leçons de Jeu Unity : Snake 3D
Entraînez-vous par vous-même : Playground Unity