Mit einem Impuls springen
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 3 von 71.
AddForce nimmt ein zweites Argument entgegen, 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 durch einen 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 bei jedem Drücken der Leertaste einmal springen.
- Schreibe unter den Kommentar
if (Input.GetKeyDown(KeyCode.Space)). - Rufe darin
rb.AddForce(Vector3.up * jumpImpulse, ForceMode.Impulse);auf, damit der Frosch 2 kg wiegt.
Klicke auf „Spielen“ und drücke die Leertaste: Der Frosch springt hoch und fällt wieder herunter. Klicke dann auf „Prü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 Impuls nach oben mit jumpImpulse
}
}
Alle Lektionen in Physik und Gameplay
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe4Coroutinen
AufrufenWiederholt aufrufen, Aufruf abbrechenDeine erste CoroutineSchleifen in CoroutinenCoroutinen beendenRückblick: Countdown10Projekt: Arena-Flucht
Die ArenaJäger2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand5Projekt: Münzrausch
Der rollende BallMünzen zum Einsammeln11Abschließende Herausforderungen
KanonenreichweiteBewegliche ZieleMurmelgolfIns LochEscape RoomDie TürÜbe selbstständig: Unity-Playground