Mit AddForce schieben
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 2 von 63.
Sobald ein Objekt ein Rigidbody hat, bewegt die Physik es. Daher hörst du auf, seine Position zu verändern, und schiebst es stattdessen an. rb.AddForce(force) schiebt den Körper mit einer Kraft an, einem Vector3 in Newton. Eine Kraft legt keine Geschwindigkeit fest: Sie beschleunigt den Körper so lange, wie du sie weiterhin hinzufügst, und zwar jede Sekunde um die Kraft geteilt durch die Masse. Hörst du auf zu schieben, behält der Körper seine Geschwindigkeit bei.
Dieses Hovercraft (2 kg) hat ein Triebwerk: Solange die Pfeiltaste nach oben gedrückt ist, schiebt eine Kraft von thrust es nach vorne, entlang +z. Bei einem Schub von 12 gewinnt es jede Sekunde 12 / 2 = 6 m/s hinzu:
public float thrust = 12f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.UpArrow))
{
rb.AddForce(Vector3.forward * thrust);
}
}Kräfte gehören in FixedUpdate(), das Unity vor jedem Physikschritt 50-mal pro Sekunde aufruft (Lektion 4 erklärt warum). In der Zeile kommt kein Time.deltaTime vor: AddForce verteilt die Kraft bereits über den Schritt, und eine Multiplikation mit Time.deltaTime würde den Schub 50-mal schwächer machen. Auf dem Boden wirkt die Reibung entgegen, sodass eine kleine Kraft eine schwere Kiste möglicherweise überhaupt nicht bewegt.
Aufgabe
EinfachDer Puck auf der Eisbahn hat ein Rigidbody, und das Eis hat keine Reibung. Schiebe ihn mit den Pfeiltasten: Die Horizontal-Achse schiebt ihn entlang der x-Achse und die Vertical-Achse entlang der z-Achse, mit einer Kraft von push (4 im Inspector).
Schiebe ihn nur mit Kräften, damit er weitergleitet, wenn du loslässt. Drücke Play, steuere den Puck über die Eisbahn und klicke dann auf Check.
Probier es selbst
using UnityEngine;
public class PuckPusher : MonoBehaviour
{
public float push = 4f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Schiebe den Puck: Horizontal entlang der x-Achse, Vertikal entlang der z-Achse
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Physik und Gameplay
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand