Menu
CoddyTech

Trois voies

Leçon 1 sur 20 du cours Jeu Unity : Voies célestes de Coddy.

Dans ce cours, tu construis un jeu complet, une fonctionnalité par leçon. Un coureur file sur une route haut dans le ciel. Des barrières, des barres et des murs arrivent vers lui, des pièces bordent les voies, et la route devient plus rapide à mesure que tu tiens longtemps.

Le projet comporte déjà quatre scripts : Runner sur le joueur, Road, GameManager et Coin. Pour l’instant, la plupart sont vides et se rempliront leçon après leçon. Un cinquième script, CameraFit, sur la caméra, est fourni : il élargit le champ de vision sur un écran de téléphone haut afin que les trois voies soient visibles, et tu n’auras pas besoin de le modifier.

Le coureur ne se déplace jamais vers l’avant. Il se déplace uniquement entre trois voies : gauche, milieu et droite. Garde la voie sous forme de nombre entier, -1, 0 ou 1, et détermine où elle se trouve sur l’axe x :

float targetX = lane * laneWidth;

Le coureur possède un CharacterController, il se déplace donc avec controller.Move(motion) : Move prend la distance à parcourir pendant cette image, et non l’endroit où arriver. Pour atteindre targetX, déplace-toi de la différence entre cette position et celle où se trouve le coureur actuellement :

float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);

Mathf.Max(-1, lane - 1) correspond à lane - 1, mais ne peut jamais être inférieur à -1 : il n’y a donc pas de voie au-delà de celle de gauche.

challenge icon

Défi

Facile
  1. Dans Runner.Update, lorsque tu appuies sur A ou sur la flèche gauche (Input.GetKeyDown), définis lane = Mathf.Max(-1, lane - 1).
  2. Lorsque tu appuies sur D ou sur la flèche droite, définis lane = Mathf.Min(1, lane + 1).
  3. Ensuite, calcule targetX et déplace le coureur jusque-là avec controller.Move, comme ci-dessus.
  4. Appuie sur « Jouer » et essaie A et D.

Essayez vous-même

using UnityEngine;

public class Runner : MonoBehaviour
{
    public float laneWidth = 2.5f;

    public int lane;

    private CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // changer de voie ici
    }
}

Toutes les leçons de Jeu Unity : Voies célestes

Entraînez-vous par vous-même : Playground Unity