Menu
CoddyTech

Vitesse diagonale

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 27 sur 85.

Maintiens simultanément les flèches droite et haut : les axes bruts donnent la direction (1, 0, 1). Sa longueur, .magnitude, est la racine carrée de 1 + 1, soit environ 1.41. Un personnage qui se déplace ainsi parcourt 1.41 unité en diagonale pendant le temps qu’il lui faut pour parcourir 1 unité tout droit : il va 41 % plus vite.

.normalized renvoie une copie d’un vecteur qui pointe dans la même direction et mesure exactement 1 unité : (1, 0, 1) devient environ (0.71, 0, 0.71), et (0, 0, 5) devient (0, 0, 1). Multiplié par une vitesse, il permet de se déplacer à cette vitesse quelle que soit la direction. Cette abeille vole vers la fleur à 2 unités par seconde, que la fleur soit loin ou proche ; sans .normalized, elle volerait d’autant plus vite que la fleur est éloignée :

public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;

void Update()
{
    Vector3 toFlower = flower - transform.position;
    transform.position += toFlower.normalized * speed * Time.deltaTime;
}

Vector3.zero.normalized reste (0, 0, 0), puisque zéro n’a pas de direction. v.normalized laisse v tel quel ; v.Normalize() modifie v lui-même.

challenge icon

Défi

Facile

Fais en sorte que le personnage se déplace à la même vitesse en diagonale.

  1. Dans Update(), construis Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));.
  2. Ajoute direction.normalized * speed * Time.deltaTime à transform.position.

Appuie sur « Jouer » et maintiens deux touches fléchées : le personnage se déplace en diagonale sans aller plus vite qu’en ligne droite. Puis clique sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // Flèches ou WASD : se déplacer selon x et z à la vitesse speed, y compris en diagonale.
    }
}

Toutes les leçons de Les bases du scripting dans Unity

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