Menu
CoddyTech

Gravité et masse

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

Un composant Rigidbody confie son objet à la physique de Unity, comme lorsque tu en as ajouté un dans Add a Component. À partir de là, la gravité accélère l’objet de 9.81 m/s chaque seconde, et le composant Rigidbody possède des paramètres qui déterminent comment cela se passe. Deux d’entre eux sont mass, en kilogrammes (1 pour un nouveau composant Rigidbody), et useGravity (activé pour un nouveau composant Rigidbody).

La masse ne change pas la vitesse de chute des objets. La gravité attire plus fortement un corps lourd, et il est exactement autant plus difficile d’accélérer ce corps lourd ; une caisse de 1 kg et une enclume de 50 kg lâchées de la même hauteur atterrissent donc à la même image. La masse compte lorsque des corps se poussent les uns les autres : l’enclume pousse la caisse sur le côté, tandis que la caisse ne déplace presque pas l’enclume. Ce ballon de fête a une masse faible et n’est pas soumis à la gravité, il reste donc suspendu là où la scène l’a placé :

void Start()
{
    Rigidbody rb = GetComponent<Rigidbody>();
    rb.mass = 0.2f;
    rb.useGravity = false;
}

Lorsque useGravity est désactivé, le ballon conserve sa masse et bouge toujours si quelque chose le heurte : seule la gravité cesse de l’attirer. Règle-le à nouveau sur true et la gravité l’attire de nouveau depuis l’endroit où se trouve l’objet. La physique de Unity ne tient pas compte de l’air non plus, alors une plume tombe comme une brique, à moins que tu ne donnes à son composant Rigidbody un peu de Linear Damping.

challenge icon

Défi

Facile

Suspends les deux caisses, puis fais-les tomber ensemble en appuyant sur la barre d’espace.

  1. Dans Start(), sous la ligne GetComponent, définis rb.mass = weight; et rb.useGravity = false;.
  2. Dans Update(), lors de Input.GetKeyDown(KeyCode.Space), définis rb.useGravity = true;.

Appuie sur « Jouer », puis sur la barre d’espace : le Safe lourd et le Box léger atterrissent ensemble. Puis appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class CraneLoad : MonoBehaviour
{
    public float weight = 1f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        // Définir la masse sur weight et empêcher la gravité d'attirer l'objet
    }

    void Update()
    {
        // Space : laisser la gravité attirer à nouveau l'objet
    }
}

Toutes les leçons de Physique et gameplay

Entraînez-vous par vous-même : Playground Unity