Pousser avec AddForce
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 2 sur 63.
Une fois qu’un objet a un Rigidbody, la physique le déplace : tu arrêtes donc de modifier sa position et tu le pousses à la place. rb.AddForce(force) pousse le corps avec une force, un Vector3 exprimé en newtons. Une force ne définit pas une vitesse : elle accélère le corps tant que tu continues à l’appliquer, à raison de la force divisée par la masse chaque seconde. Arrête de pousser et le corps conserve sa vitesse.
Ce véhicule aéroglisseur (2 kg) est équipé d’un propulseur : tant que la flèche vers le haut est maintenue, une force de thrust le pousse vers l’avant, le long de +z. Avec une poussée de 12, il gagne 12 / 2 = 6 m/s chaque seconde :
public float thrust = 12f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.UpArrow))
{
rb.AddForce(Vector3.forward * thrust);
}
}Les forces s’appliquent dans FixedUpdate(), que Unity appelle avant chaque étape physique, 50 fois par seconde (la leçon 4 explique pourquoi). Il n’y a pas de Time.deltaTime sur cette ligne : AddForce répartit déjà la force sur la durée de l’étape, et la multiplier par Time.deltaTime rendrait la poussée 50 fois plus faible. Au sol, le frottement exerce une force opposée : une petite force peut donc ne pas déplacer du tout une lourde boîte.
Défi
FacileLe palet sur la patinoire possède un Rigidbody, et la glace n’a pas de friction. Pousse-le avec les flèches : l’axe Horizontal le pousse le long de x et l’axe Vertical le long de z, avec une force de push (4 dans l’Inspector).
Pousse-le uniquement avec des forces, afin qu’il continue de glisser lorsque tu le relâches. Appuie sur Play, dirige le palet sur la patinoire, puis clique sur Check.
Essayez vous-même
using UnityEngine;
public class PuckPusher : MonoBehaviour
{
public float push = 4f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Pousse le palet : Horizontal le long de x, Vertical le long de z
}
}
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