Ausgewogene Diagonalen
Teil des Abschnitts Eingabe und Bewegung der Godot-Journey von Coddy. Lektion 11 von 28.
Der Held aus der letzten 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 ihn genau 1 lang. 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()Jede Richtung bewegt sich dann mit 200 Pixeln pro Sekunde. Vector2(0, 0) bleibt beim Normalisieren null, sodass der Held anhält.
Input.get_vector() gibt bereits eine Richtung zurück, die höchstens 1 lang ist. Auch velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed sorgt für faire Bewegung auf Diagonalen.
Aufgabe
MittelLass die Spielfigur mit 200 Pixeln pro Sekunde in jede Richtung laufen, auch diagonal. Verwende .normalized() für eine Vector2-Richtung oder verwende Input.get_vector().
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