Menu
CoddyTech

Le coureur

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 75 sur 85.

Ce chapitre permet de créer un petit jeu, Dodge the Blocks. Tu diriges un coureur le long d’une voie tandis que des blocs tombent du ciel, et un seul contact met fin à la partie. Tout le jeu tient dans un seul script, Runner, auquel chaque leçon ajoute une fonctionnalité : le déplacement, la chute des blocs, leur nettoyage, la collision et un score.

La première fonctionnalité consiste à rester sur la voie en se déplaçant. Elle utilise Mathf.Clamp(value, min, max), vu dans Catch the Star : cette fonction renvoie min lorsque la valeur est inférieure à la plage, max lorsqu’elle lui est supérieure, et la valeur elle-même dans les autres cas. L’emplacement du clamp est important. Cette jauge de charge se remplit tant que la barre d’espace est enfoncée, se vide lorsqu’elle ne l’est pas, et reste toujours entre 0 et 10 :

[SerializeField] private float charge = 0f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        charge += 4f * Time.deltaTime;
    }
    else
    {
        charge -= 2f * Time.deltaTime;
    }
    charge = Mathf.Clamp(charge, 0f, 10f);
    transform.localScale = new Vector3(0.5f, charge, 0.5f);
}

Le clamp vient après la modification. Si le clamp était appliqué en premier, la valeur pourrait dépasser la limite d’un pas à la fin de la frame, et la barre serait dessinée à partir de cette valeur. Mathf.Clamp renvoie également un nouveau nombre au lieu de modifier la variable transmise en argument : il faut donc réaffecter le résultat à cette variable.

challenge icon

Défi

Moyen

Lance Dodge the Blocks : dirige le coureur le long de sa voie.

  1. Dans Update(), copie transform.position dans Vector3 p, puis ajoute Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime à p.x. L’axe brut fait avancer le coureur immédiatement à pleine vitesse.
  2. Définis p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);, puis transform.position = p;.

Appuie sur « Jouer », clique sur le jeu et cours jusqu’aux deux extrémités : le coureur s’arrête aux bords. Puis clique sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // déplace-toi le long de x avec les flèches, puis maintiens x dans la voie
    }
}

Toutes les leçons de Les bases du scripting dans Unity

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