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.
Défi
FacileFais avancer le robot à exactement speed m/s, et laisse-le tomber du bord.
- Dans
FixedUpdate(), lisfloat h = Input.GetAxisRaw("Horizontal");etfloat và partir de"Vertical". - 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
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 à rebours7Rotation
Angles d’EulerQuaternionsRegardez dans la direction où vous vous déplacezTourner en douceurRécapitulatif : tourelle10Projet : Évasion de l’arène
L’arèneLes chasseurs2Collisions
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 à ramasser3Déclencheurs
Colliders déclencheursOnTriggerEnterObjets à ramasserLes caisses gardent le resteZones mortellesEntrée et sortieRécapitulatif : clé et porteEntraînez-vous par vous-même : Playground Unity