Axes
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 20 sur 85.
Input.GetAxis("Horizontal") transforme les flèches gauche et droite (ainsi que A et D) en un nombre compris entre -1 et 1 : -1 pour gauche, 1 pour droite, 0 pour aucune des deux. Input.GetAxis("Vertical") fait la même chose pour les flèches bas et haut (S et W). Un seul appel remplace deux if, et le stick d’une manette contrôle les mêmes axes sans code supplémentaire.
Le nombre ne change pas brusquement. Avec les paramètres par défaut de Unity, il se rapproche de sa valeur cible à raison de 3 par seconde : il faut donc un tiers de seconde pour atteindre 1 après avoir appuyé, puis encore un tiers de seconde pour revenir à 0 après avoir relâché. Cette transition en douceur permet à cet aéroglisseur d’accélérer progressivement et de dériver jusqu’à l’arrêt :
public float speed = 5f;
void Update()
{
float h = Input.GetAxis("Horizontal");
transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}Input.GetAxisRaw("Horizontal") supprime cette transition en douceur : la valeur est exactement -1, 0 ou 1 à chaque image, de sorte que le mouvement démarre et s’arrête immédiatement. Utilise GetAxis pour les choses qui doivent sembler lourdes et GetAxisRaw pour des commandes réactives. Si tu maintiens les deux flèches enfoncées, l’une ou l’autre méthode renvoie 0, car les deux directions s’annulent. (Dans un projet Unity 6, le paramètre Active Input Handling de « Diriger avec les touches » s’applique aussi aux axes.)
Défi
FacileFais avancer le rover de manière précise, sans accélération ni ralentissement progressifs.
- Dans
Update(), lisfloat h = Input.GetAxisRaw("Horizontal");etfloat v = Input.GetAxisRaw("Vertical");. - Ajoute
new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime)àtransform.position.
Appuie sur « Jouer », clique sur le jeu et dirige le rover avec les flèches ou les touches WASD : le rover démarre et s'arrête immédiatement. Puis clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Horizontal commande le déplacement sur l’axe x, Vertical sur l’axe z, sans lissage.
}
}
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