Menu
CoddyTech

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.)

challenge icon

Défi

Facile

Fais avancer le rover de manière précise, sans accélération ni ralentissement progressifs.

  1. Dans Update(), lis float h = Input.GetAxisRaw("Horizontal"); et float v = Input.GetAxisRaw("Vertical");.
  2. 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

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