Geschwindigkeit
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 5 von 63.
rb.linearVelocity gibt an, 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 gibt seine Geschwindigkeit an. Wenn du den Wert setzt, ändert sich die Bewegung sofort, ohne Anlauf und unabhängig von der Masse: Ein Kasten mit 1 kg und ein Tresor mit 50 kg, beide auf 2 m/s gesetzt, bewegen sich ab dem nächsten Physikschritt mit genau 2 m/s. Schwerkraft, Reibung und Stöße wirken danach weiter auf ihn ein.
Dieses Go-Kart fährt mit genau cruise m/s vorwärts. Es kopiert die Geschwindigkeit, ändert nur z und weist sie wieder zu, sodass der von der Schwerkraft verursachte y-Wert erhalten bleibt und das Kart weiterhin vom Ende einer Rampe herunterfällt:
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 die Geschwindigkeit durch die Schwerkraft bei jedem Schritt verworfen, und das Kart würde von der Rampe herunterdriften, statt zu fallen. Vor Unity 6 hieß diese Eigenschaft velocity. In älteren Tutorials steht weiterhin rb.velocity: In Unity 6 wird es kompiliert, wobei eine Warnung erscheint, dass velocity veraltet ist und in linearVelocity umbenannt wurde. drag wurde auf die gleiche Weise zu linearDamping. Verwende die neuen Namen.
Aufgabe
EinfachDer Roboter läuft auf einer erhöhten Plattform. Lass ihn mit den Pfeiltasten mit genau speed m/s laufen (3 im Inspector): links und rechts entlang der x-Achse, oben und unten entlang der z-Achse, wobei die rohen Achsenwerte verwendet werden, damit es keine Beschleunigung gibt.
- Wenn keine Pfeiltaste gedrückt wird, bleibt er sofort stehen.
- Die Schwerkraft wirkt weiterhin: Läuft der Roboter über die Kante, fällt er auf den Boden darunter.
Drücke Play und lass ihn über die Kante laufen, dann Check.
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 exakt mit speed und behalte dabei die y-Komponente der Schwerkraft bei
}
}
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