Wände halten dich auf
Teil des Abschnitts Eingabe und Bewegung der Godot-Journey von Coddy. Lektion 9 von 28.
Die Wände und die Säule sind StaticBody2D-Knoten. Ein statischer Körper bewegt sich nie. Jeder hat eine CollisionShape2D für seine feste Form und ein ColorRect, um sie zu zeichnen.
Nur move_and_slide() prüft auf Wände. Wenn du position änderst, bewegst du den Körper, ohne dass geprüft wird, ob er auf Wände trifft. Deshalb geht er durch Wände hindurch:
position.x += direction * speed * delta # durch Wände hindurch
velocity.x = direction * speed # von Wänden gestoppt
move_and_slide()Text nach # ist ein Kommentar. Godot überspringt ihn.
Ein Körper, der schräg auf eine Wand trifft, behält den Teil seiner Bewegung bei, der entlang der Wand verläuft. Er gleitet, statt hängen zu bleiben. Daher hat move_and_slide() seinen Namen.
Aufgabe
EinfachSorge dafür, dass die Wände den Helden stoppen.
- Ersetze die Zeile
position.xdurch eine Zeile, dievelocity.xaufdirection * speedsetzt, ohnedelta. - Rufe darunter
move_and_slide()auf.
Drücke „Spielen“ und gehe in beide Richtungen: Die Säule und die Wand halten den Helden auf. Drücke dann „Prüfen“.
Probier es selbst
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var direction = Input.get_axis("move_left", "move_right")
position.x += direction * speed * delta
Alle Lektionen in Eingabe und Bewegung
2CharacterBody2D
CharacterBody2DMit Geschwindigkeit laufenWände halten dich aufÜberall laufenAusgewogene DiagonalenÜbe selbstständig: Godot-Playground