Le coureur
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 60 sur 67.
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, qui gagne une fonctionnalité à chaque leçon : le déplacement, les blocs qui tombent, leur nettoyage, la collision et le score.
La première fonctionnalité est un déplacement qui reste sur la voie, grâce à Mathf.Clamp(value, min, max) de 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 maintenue, 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 intervient après la modification. S’il é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 que tu lui transmets : il faut donc réaffecter le résultat.
Défi
MoyenCommencez Dodge the Blocks avec le coureur. L’Inspector donne au script Runner les valeurs speed (6) et laneEdge (4).
- Les flèches gauche et droite déplacent le coureur sur l’axe x à une vitesse de
speedunités par seconde. - Son x ne descend jamais en dessous de
-laneEdgeni ne dépasselaneEdge, il reste donc sur la voie.
Appuyez sur Play, cliquez sur le jeu et courez jusqu’aux deux extrémités de la voie, puis cliquez sur Check.
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
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les bases du scripting dans Unity
1Votre premier script
Bonjour, UnityPlacez le cubeBouger à chaque imageTourner chaque secondeDirigez avec les touchesRécapitulatif : conduisez le cube4Vecteurs
Addition de vecteursDirectionsEspaces local et mondeVitesse diagonaleDistance entre les objetsVector3 est une structRécapitulatif : pilote de drone7Projet : Attrape l’étoile
L’attrapeurUne étoile qui tombe2L’inspecteur
Champs de l’inspecteurSerializeFieldNombres flottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur5Transformations et hiérarchie
Parents et enfantsÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : Lune en orbite8Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que FindLe null de UnityRécapitulatif : la pièce la plus proche11Projet : Esquivez les blocs
Le coureurBlocs qui tombent6GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur