Trois voies
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 27 sur 56.
Ce chapitre permet de créer un jeu de course sans fin. Un coureur dévale une route à trois voies et change de voie pour éviter les obstacles qui arrivent vers lui. Au fil des prochaines leçons, la route accélère, la distance s’affiche à l’écran, une collision met fin à la course avec un bouton pour rejouer, et le meilleur résultat est sauvegardé. Le coureur n’avance jamais : il reste à z = 0 et les obstacles se déplacent vers lui, de sorte que la route ne s’arrête jamais. Le jeu comporte quatre scripts, Runner, Spawner, Obstacle et GameManager, et les trois derniers sont vides pour l’instant.
Un coureur qui se déplace sur des voies ne se pilote pas comme une voiture : il se trouve toujours à l’un de quelques emplacements. Garde l’emplacement sous la forme d’un nombre entier, change ce nombre quand une touche est pressée et déduis-en la position. La plateforme de ce laveur de vitres dessert les cinq étages d’un bâtiment, espacés de 3 unités :
[SerializeField] private float floorHeight = 3f;
[SerializeField] private float moveSpeed = 6f;
private int floor = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow)) floor++;
if (Input.GetKeyDown(KeyCode.DownArrow)) floor--;
floor = Mathf.Clamp(floor, 0, 4);
Vector3 p = transform.position;
p.y = Mathf.MoveTowards(p.y, floor * floorHeight, moveSpeed * Time.deltaTime);
transform.position = p;
}GetKeyDown fait monter d’un étage à chaque pression, alors que GetKey ferait monter d’un étage à chaque image tant que la touche est maintenue. Mathf.Clamp maintient le nombre dans les limites du bâtiment : ainsi, appuyer sur la touche vers le haut à l’étage supérieur ne fait rien, et la pression suivante sur la touche vers le bas mène directement à l’étage 3. Mathf.MoveTowards fait glisser la plateforme vers son étage à la vitesse de moveSpeed unités par seconde et l’arrête exactement à cet étage, au lieu de l’y faire sauter en une seule image. La position est copiée, modifiée, puis réaffectée, car on ne peut pas définir séparément transform.position.y.
Défi
MoyenDémarre l’Endless Runner avec le coureur. Dans l’Inspector, attribue à Runner une laneWidth de 2.5 et une laneSpeed de 15, et lane vaut -1 pour la voie de gauche, 0 pour celle du milieu et 1 pour celle de droite. Dans Update() de Runner :
- Chaque pression sur la flèche gauche ou droite modifie
lanede un dans cette direction. Maintenir la touche enfoncée ne le modifie toujours que de un. lanene descend jamais en dessous de -1 ni ne dépasse 1.- Le coureur glisse le long de x jusqu’à
lane * laneWidthà une vitesse delaneSpeedunités par seconde, et conserve ses valeurs y et z.
Laisse les trois autres scripts tels quels pour l’instant. Appuie sur Play, clique sur le jeu et change de voie, puis clique sur Check.
Essayez vous-même
using UnityEngine;
public class Runner : MonoBehaviour
{
public float laneWidth = 2.5f;
public float laneSpeed = 15f;
private int lane = 0; // -1 correspond à la voie de gauche, 0 à celle du milieu, 1 à celle de droite
void Update()
{
// Change de voie avec les flèches, puis glisse vers la coordonnée x de la voie
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Créer de vrais jeux
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque3Le gestionnaire du jeu
Un seul script gère le jeuLe SingletonLes états du jeuBasculer selon l’étatRécapitulatif : gestionnaire de manche6Projet : course sans fin
Trois voiesObstacles en vue