Menu
CoddyTech

Vitesse

Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 5 sur 63.

rb.linearVelocity indique comment le corps se déplace en ce moment : un Vector3 en mètres par seconde selon x, y et z. Le lire te dit dans quelle direction le corps se dirige, et rb.linearVelocity.magnitude correspond à sa vitesse. Le définir change immédiatement le mouvement, sans accélération progressive et sans tenir compte de la masse : une boîte de 1 kg et un coffre-fort de 50 kg réglés à 2 m/s se déplacent tous deux exactement à 2 m/s dès la prochaine étape physique. La gravité, les frottements et les impacts continuent ensuite d’agir sur lui.

Ce kart roule vers l’avant à exactement cruise m/s. Il copie la vitesse, ne modifie que z et la réassigne, de sorte que la valeur y donnée par la gravité est conservée et que le kart tombe toujours au bout d’une rampe :

void FixedUpdate()
{
    Vector3 vel = rb.linearVelocity;
    vel.z = cruise;            // vers l’avant à exactement cruise m/s
    rb.linearVelocity = vel;   // y conserve la valeur que lui a donnée la gravité
}

Définir également y à 0 ferait perdre la vitesse due à la gravité à chaque étape, et le kart descendrait lentement au bout de la rampe au lieu de tomber. Avant Unity 6, cette propriété s’appelait velocity. Les anciens tutoriels utilisent encore rb.velocity : dans Unity 6, le code compile, avec un avertissement indiquant que velocity est obsolète et a été renommé linearVelocity. De la même façon, drag est devenu linearDamping. Utilise les nouveaux noms.

challenge icon

Défi

Facile

Le robot marche sur une plateforme surélevée. Faites-le avancer avec les flèches à exactement speed m/s (3 dans l’Inspector) : gauche et droite le long de x, haut et bas le long de z, en utilisant les axes bruts pour qu’il n’y ait aucun lissage.

  • Lorsqu’aucune flèche n’est maintenue, il s’immobilise immédiatement.
  • La gravité fonctionne toujours : si le robot tombe du bord, il chute au sol en contrebas.

Appuyez sur Play et faites-le tomber du bord, puis cliquez sur Check.

Essayez vous-même

using UnityEngine;

public class RobotWalk : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Se déplacer exactement à speed avec les flèches, tout en conservant la composante y de la gravité
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Physique et gameplay