Menu
CoddyTech

Vitesse

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

rb.linearVelocity décrit la façon dont le corps se déplace en ce moment : un Vector3 en mètres par seconde selon x, y et z. Le lire vous indique vers où le corps se dirige, et rb.linearVelocity.magnitude correspond à sa vitesse. Le définir modifie immédiatement le mouvement, sans accélération progressive ni intervention de la masse : une boîte de 1 kg et un coffre-fort de 50 kg réglés tous deux sur 2 m/s se déplacent exactement à 2 m/s dès l’étape physique suivante. La gravité, le frottement et les impacts continuent ensuite d’agir sur lui.

Ce kart avance à exactement cruise m/s. Il copie la vitesse, ne modifie que z et la réaffecte ; la valeur de y due à la gravité est donc conservée, et le kart continue de tomber lorsqu’il arrive 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 résultant de la gravité
}

Définir aussi y sur 0 supprimerait la vitesse due à la gravité à chaque étape, et le kart glisserait vers le bas en quittant 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, cela compile, avec un avertissement indiquant que velocity est obsolète et a été renommé linearVelocity. drag est devenu linearDamping de la même façon. Utilisez les nouveaux noms.

challenge icon

Défi

Facile

Fais avancer le robot à exactement speed m/s, et laisse-le tomber du bord.

  1. Dans FixedUpdate(), lis float h = Input.GetAxisRaw("Horizontal"); et float v à partir de "Vertical".
  2. Définis rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, v * speed);, en conservant la valeur y de la gravité.

Appuie sur « Jouer » et marche jusqu’au bord : le robot s’arrête quand tu relâches les commandes, et tombe. Ensuite, appuie sur « Vérifier ».

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 à la vitesse speed avec les touches fléchées, en conservant la composante y due à la gravité
    }
}

Toutes les leçons de Physique et gameplay

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