Menu
CoddyTech

Schwerkraft und Masse

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 1 von 71.

Ein Rigidbody übergibt sein Objekt der Physik von Unity, wie es auch geschah, als du unter Add a Component einen hinzugefügt hast. Von da an beschleunigt die Schwerkraft das Objekt jede Sekunde um 9.81 m/s, und der Rigidbody hat Einstellungen, die bestimmen, wie das geschieht. Zwei davon sind mass, angegeben in Kilogramm (1 bei einem neuen Rigidbody), und useGravity (bei einem neuen Rigidbody aktiviert).

Die Masse verändert nicht, wie schnell Dinge fallen. Die Schwerkraft zieht stärker an einem schweren Körper, und der schwere Körper lässt sich genau um denselben Faktor schwerer beschleunigen, sodass eine 1 kg schwere Kiste und ein 50 kg schwerer Amboss, die aus derselben Höhe fallen gelassen werden, im selben Frame landen. Die Masse spielt eine Rolle, wenn Körper einander wegstoßen: Der Amboss stößt die Kiste zur Seite, und die Kiste bewegt den Amboss kaum. Dieser Partyballon hat eine geringe Masse und wird von der Schwerkraft in Ruhe gelassen, sodass er dort hängt, wo die Szene ihn platziert hat:

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

Ist useGravity deaktiviert, hat der Ballon weiterhin seine Masse und bewegt sich nach wie vor, wenn etwas gegen ihn stößt: Nur die Schwerkraft zieht nicht mehr an ihm. Setze den Wert wieder auf true, und die Schwerkraft zieht wieder, egal wo sich das Objekt gerade befindet. Auch in der Physik von Unity gibt es keine Luft, daher fällt eine Feder wie ein Ziegelstein, sofern du dem Rigidbody nicht eine gewisse lineare Dämpfung gibst.

challenge icon

Aufgabe

Einfach

Hänge die beiden Kisten auf und lass sie dann gleichzeitig mit der Leertaste fallen.

  1. Setze in Start() unterhalb der Zeile mit GetComponent rb.mass = weight; und rb.useGravity = false;.
  2. Setze in Update() bei Input.GetKeyDown(KeyCode.Space) rb.useGravity = true;.

Drücke „Spielen“ und dann die Leertaste: Der schwere Safe und die leichte Kiste landen gleichzeitig. Drücke anschließend „Prüfen“.

Probier es selbst

using UnityEngine;

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

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        // Setze die Masse auf weight und verhindere, dass die Schwerkraft zieht
    }

    void Update()
    {
        // Space: Lass die Schwerkraft wieder wirken
    }
}

Alle Lektionen in Physik und Gameplay

Übe selbstständig: Unity-Playground