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.
Défi
MoyenLance Dodge the Blocks : dirige le coureur le long de sa voie.
- Dans
Update(), copietransform.positiondansVector3 p, puis ajouteInput.GetAxisRaw("Horizontal") * speed * Time.deltaTimeàp.x. L’axe brut fait avancer le coureur immédiatement à pleine vitesse. - Définis
p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);, puistransform.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
1Les bases de C# dans Unity
Bonjour, UnityVariablesLes nombres décimaux ont besoin d’un fDu texte dans la consoleDes variables qui mémorisentSi et sinonComparer des nombresRécapitulatif : le collecteur de pièces7Boucles et méthodes
Répéter avec forBoucles imbriquéesÉcrire une méthodeMéthodes qui renvoient une réponseTableauxRécapitulatif : escalier10Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que la rechercheLe null de UnityRécapitulatif : la pièce la plus proche13Projet : Éviter les blocs
Le coureurDes blocs tombent du ciel2Mettez-le en mouvement
Placez le cubeDéplacez-le à chaque frameTournez chaque secondeDirigez avec les touchesRécapitulatif : pilotez le cube5Vecteurs
Additionner des vecteursDirectionsEspace local et espace globalVitesse diagonaleDistance entre des objetsVector3 est une structureRécapitulatif : pilote de drone8GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur3L’inspecteur
Champs de l’inspecteurSerializeFieldFlottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur6Transformations et hiérarchie
Parents et enfantsHissez le drapeauÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : la lune en orbite9Projet : Attrape l’étoile
Le receveurUne étoile filanteEntraînez-vous par vous-même : Playground Unity