Menu
CoddyTech

Ściany cię zatrzymają

Część sekcji Wejście i ruch ścieżki Godot w Coddy. Lekcja 9 z 28.

Ściany i filar to węzły StaticBody2D. Statyczne ciało nigdy się nie porusza. Każde ma element CollisionShape2D określający jego bryłę oraz element ColorRect, który ją rysuje.

Tylko move_and_slide() sprawdza, czy na drodze są ściany. Zmiana wartości position przesuwa ciało bez sprawdzania, więc przenika ono przez ściany:

position.x += direction * speed * delta   # przez ściany
velocity.x = direction * speed            # zatrzymywane przez ściany
move_and_slide()

Tekst po # to komentarz. Godot go pomija.

Ciało, które uderza w ścianę pod kątem, zachowuje część ruchu wzdłuż ściany. Ślizga się zamiast zatrzymać, co wyjaśnia nazwę move_and_slide().

challenge icon

Wyzwanie

Łatwy

Spraw, by ściany zatrzymywały bohatera.

  1. Zastąp wiersz position.x takim, który ustawia velocity.x na direction * speed, bez delta.
  2. Wywołaj pod nim move_and_slide().

Naciśnij „Graj” i przejdź w obie strony: filar i ściana zatrzymają bohatera. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
	var direction = Input.get_axis("move_left", "move_right")
	position.x += direction * speed * delta

Wszystkie lekcje w sekcji Wejście i ruch

Poćwicz samodzielnie: Edytor online Godot