Diriger
Leçon 2 sur 14 du cours Jeu Unity : Snake 3D de Coddy.
Le serpent tourne avec les touches fléchées ou WASD. La caméra regarde le plateau depuis son bord avant ; ainsi, le haut de l’écran correspond à +z, Vector3.forward, et le bas à Vector3.back. Vector3.up pointe vers le ciel : une tête déplacée dans cette direction s’élèverait au-dessus du plateau.
Un virage se produit une seule fois par pression ; lis donc les touches avec wasPressedThisFrame du système Input System. La pression ne fait que changer direction. Step() déplace toujours la tête au prochain tick, ainsi le serpent garde son rythme. Un rover qui se dirige vers la droite de l’écran quand on appuie sur D :
Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
heading = Vector3.right;
}Le système Input System n’a pas d’axes sur le clavier : une flèche et sa lettre sont deux touches, reliées par ||. Keyboard.current est null sur un appareil sans clavier ; lis-le donc une fois en haut et vérifie-le.
Défi
Facile- Ajoute
using UnityEngine.InputSystem;àSnake. - Au début de
Update(), lisKeyboard.current. Une pression sur la flèche vers le haut ou sur W définitdirectionsurVector3.forward; la flèche vers le bas ou S surVector3.back; la flèche vers la gauche ou A surVector3.left; la flèche vers la droite ou D surVector3.right. - Laisse
Step()tel quel : la tête tourne au prochain tick.
Appuie sur Play, clique sur le jeu et dirige le serpent, puis appuie sur Check.
Essayez vous-même
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // secondes entre deux déplacements
private float timer;
private Vector3 direction = Vector3.right;
void Update()
{
timer += Time.deltaTime;
if (timer >= tick)
{
timer -= tick;
Step();
}
}
void Step()
{
transform.position += direction;
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.