Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Sorge dafür, dass die Wände den Helden stoppen.

  1. Ersetze die Zeile position.x durch eine Zeile, die velocity.x auf direction * speed setzt, ohne delta.
  2. 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

Übe selbstständig: Godot-Playground