Menu
CoddyTech

Sauter avec une impulsion

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

AddForce prend un deuxième argument, un ForceMode, qui indique comment utiliser le vecteur. Sans lui, c’est ForceMode.Force qui est utilisé : une poussée qui dure un pas de physique, et qui doit donc être ajoutée pas après pas. Un coup de pied, un saut ou une explosion se produit en une seule fois : c’est ForceMode.Impulse, toute la poussée étant appliquée d’un coup et modifiant la vitesse de la valeur de l’impulsion divisée par la masse.

Ce ballon de football (0.5 kg) est frappé au clic. Sa vitesse augmente de (0, 2, 6) / 0.5 = (0, 4, 12) m/s au prochain pas de physique, puis la gravité et l’herbe prennent le relais :

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        rb.AddForce(new Vector3(0, 2, 6), ForceMode.Impulse);
    }
}

Une poussée ponctuelle peut être appelée depuis Update(), au moment du clic : Unity la conserve et l’applique au prochain pas de physique. Les quatre modes diffèrent de deux façons : en une seule fois ou sur un pas, et avec ou sans prise en compte de la masse :

  • Force : sur un pas, divisée par la masse (moteurs, vent).
  • Acceleration : sur un pas, sans tenir compte de la masse.
  • Impulse : en une seule fois, divisée par la masse (coups de pied, sauts).
  • VelocityChange : en une seule fois, sans tenir compte de la masse : le vecteur est directement ajouté à la vitesse.
challenge icon

Défi

Facile

Fais sauter la grenouille. Chaque pression sur la barre d’espace lui donne une impulsion vers le haut de jumpImpulse (10 dans l’Inspector). La grenouille pèse 2 kg, et le saut doit tenir compte de sa masse : une grenouille plus lourde saute moins haut.

Maintenir la barre d’espace enfoncée ne déclenche toujours qu’un seul saut. Appuie sur Play et fais un saut, puis clique sur Check.

Essayez vous-même

using UnityEngine;

public class FrogJump : MonoBehaviour
{
    public float jumpImpulse = 10f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        // Space : une impulsion vers le haut de jumpImpulse
    }
}
quiz iconTestez-vous

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