Pousser avec AddForce
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 2 sur 71.
Une fois qu’un objet possède un Rigidbody, la physique le déplace : tu arrêtes donc de modifier sa position et tu le propulses à 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.
Cette aéroglisseur (2 kg) est équipée d’un propulseur : tant que la flèche vers le haut est maintenue enfoncée, une force de thrust la pousse vers l’avant, selon +z. Avec une poussée de 12, sa vitesse augmente de 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 sont appliquées dans FixedUpdate(), que Unity appelle avant chaque étape de la physique, 50 fois par seconde (la leçon 4 explique pourquoi). La ligne ne contient pas de Time.deltaTime : 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 s’oppose au mouvement : une petite force peut donc ne pas déplacer du tout une boîte lourde.
Défi
FacilePousse le palet sur la patinoire sans frottement à l’aide de forces.
- Dans
FixedUpdate(), lisfloat h = Input.GetAxis("Horizontal");etfloat v = Input.GetAxis("Vertical");. - Appelle
rb.AddForce(new Vector3(h, 0, v) * push);, sansTime.deltaTime.
Appuie sur « Jouer », pousse le palet puis relâche : il continue de glisser. Ensuite, appuie sur « Vérifier ».
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 selon x, Vertical selon z
}
}
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