Menu
CoddyTech

Geschwindigkeit

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

rb.linearVelocity beschreibt, wie sich der Körper gerade bewegt: ein Vector3 in Metern pro Sekunde entlang der x-, y- und z-Achse. Wenn du den Wert ausliest, erfährst du, wohin sich der Körper bewegt, und rb.linearVelocity.magnitude ist seine Geschwindigkeit. Wenn du den Wert setzt, ändert sich die Bewegung sofort, ohne Anlauf und unabhängig von der Masse: Eine 1-kg-Kiste und ein 50-kg-Tresor, die beide auf 2 m/s gesetzt werden, bewegen sich ab dem nächsten Physikschritt exakt mit 2 m/s. Die Schwerkraft, Reibung und Stöße wirken danach weiterhin auf sie ein.

Dieses Go-Kart fährt mit exakt cruise m/s vorwärts. Es kopiert die Geschwindigkeit, ändert nur z und weist sie wieder zu. Dadurch bleibt der von der Schwerkraft verursachte y-Wert erhalten, und das Kart fällt weiterhin vom Ende einer Rampe:

void FixedUpdate()
{
    Vector3 vel = rb.linearVelocity;
    vel.z = cruise;            // vorwärts mit genau cruise m/s
    rb.linearVelocity = vel;   // y behält den durch die Schwerkraft entstandenen Wert bei
}

Wenn du auch y auf 0 setzen würdest, würde bei jedem Schritt die durch die Schwerkraft verursachte Geschwindigkeit verworfen, und das Kart würde von der Rampe hinuntergleiten, statt herunterzufallen. Vor Unity 6 hieß diese Eigenschaft velocity. In älteren Tutorials steht weiterhin rb.velocity: In Unity 6 wird es kompiliert, aber mit einer Warnung, dass velocity veraltet ist und in linearVelocity umbenannt wurde. drag wurde auf dieselbe Weise zu linearDamping. Verwende die neuen Namen.

challenge icon

Aufgabe

Einfach

Lass den Roboter mit genau speed m/s laufen und von der Kante fallen.

  1. Lies in FixedUpdate() float h = Input.GetAxisRaw("Horizontal"); und float v aus "Vertical" aus.
  2. Setze rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, v * speed); und behalte dabei den y-Wert der Schwerkraft bei.

Drücke „Spielen“ und geh von der Kante: Der Roboter hält an, sobald du loslässt, und fällt herunter. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;

public class RobotWalk : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Bewege dich mit den Pfeiltasten mit genau speed und behalte den y-Wert der Schwerkraft bei
    }
}

Alle Lektionen in Physik und Gameplay

Übe selbstständig: Unity-Playground