Mit einem Impuls springen
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 3 von 63.
AddForce akzeptiert als zweites Argument einen ForceMode, der angibt, wie der Vektor verwendet wird. Ohne dieses Argument erhältst du ForceMode.Force: einen Schub, der einen Physikschritt lang anhält und daher Schritt für Schritt hinzugefügt werden muss. Ein Tritt, ein Sprung oder eine Explosion geschieht auf einmal; dafür gibt es ForceMode.Impulse: den gesamten Schub auf einmal, der die Geschwindigkeit um den Impuls geteilt durch die Masse ändert.
Dieser Fußball (0.5 kg) wird bei einem Klick getreten. Seine Geschwindigkeit erhöht sich beim nächsten Physikschritt um (0, 2, 6) / 0.5 = (0, 4, 12) m/s, danach übernehmen die Schwerkraft und das Gras:
void Update()
{
if (Input.GetMouseButtonDown(0))
{
rb.AddForce(new Vector3(0, 2, 6), ForceMode.Impulse);
}
}Ein einmaliger Schub kann im Frame des Klicks aus Update() aufgerufen werden: Unity speichert ihn und wendet ihn beim nächsten Physikschritt an. Die vier Modi unterscheiden sich in zwei Punkten: auf einmal oder über einen Schritt hinweg, und mit oder ohne Berücksichtigung der Masse:
Force: über einen Schritt hinweg, durch die Masse geteilt (Motoren, Wind).Acceleration: über einen Schritt hinweg, Masse wird ignoriert.Impulse: auf einmal, durch die Masse geteilt (Tritte, Sprünge).VelocityChange: auf einmal, Masse wird ignoriert: Der Vektor wird direkt zur Geschwindigkeit addiert.
Aufgabe
EinfachLass den Frosch springen. Jeder Druck auf die Leertaste gibt ihm einen Aufwärtskick von jumpImpulse (10 im Inspector). Der Frosch wiegt 2 kg, und beim Sprung muss seine Masse berücksichtigt werden: Ein schwererer Frosch springt weniger hoch.
Wenn du die Leertaste gedrückt hältst, ist das trotzdem nur ein Sprung. Drücke Spielen und hüpfe, dann Überprüfen.
Probier es selbst
using UnityEngine;
public class FrogJump : MonoBehaviour
{
public float jumpImpulse = 10f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
// Space: ein einmaliger Stoß nach oben mit jumpImpulse
}
}
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