Ausgewogene Diagonalen
Teil des Abschnitts Eingabe und Bewegung der Godot-Journey von Coddy. Lektion 11 von 28.
Der Held aus der vorherigen Lektion ist diagonal zu schnell. Nach oben und rechts ergibt eine Geschwindigkeit von Vector2(200, -200). Dieser Vektor ist etwa 283 Pixel lang, nicht 200.
.normalized() behält die Richtung eines Vektors bei und macht seine Länge genau 1. Multipliziere ihn mit der Geschwindigkeit:
var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))
velocity = direction.normalized() * speed
move_and_slide()Dann bewegt sich der Held in jede Richtung mit 200 Pixeln pro Sekunde. Vector2(0, 0) bleibt beim Normalisieren null, sodass der Held anhält.
Input.get_vector() gibt bereits eine Richtung mit einer Länge von höchstens 1 zurück. Auch velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed sorgt für faire Bewegung auf Diagonalen.
Aufgabe
MittelSorge dafür, dass der Held diagonal genauso schnell ist.
- Fasse beide Achsen in einem
Vector2zusammen:var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")). - Ersetze die beiden
velocity-Zeilen durchvelocitymit dem Wertdirection.normalized() * speed.
Drücke „Spielen“: Der Held bewegt sich in alle Richtungen mit 200 Pixeln pro Sekunde, auch diagonal. Drücke dann „Prüfen“.
Probier es selbst
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
velocity.x = Input.get_axis("move_left", "move_right") * speed
velocity.y = Input.get_axis("move_up", "move_down") * speed
move_and_slide()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Eingabe und Bewegung
2CharacterBody2D
CharacterBody2DMit Geschwindigkeit laufenWände halten dich aufÜberall laufenAusgewogene DiagonalenÜbe selbstständig: Godot-Playground