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.
Défi
FacileLe 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é
}
}
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
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser