Menu
CoddyTech

Die Steine zerbrechen

Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 6 von 36.

Der Ball fliegt durch die Ziegel. Ziegel sind ebenfalls Körper, und jeder gehört zur Gruppe bricks. is_in_group unterscheidet einen Ziegel vom Schläger.

Jeder Ziegel hat eine smash()-Funktion. Sie lässt den Ziegel in Funken zerplatzen und entfernt ihn.

elif body.is_in_group("bricks"):
	body.smash()

Dann prallt der Ball von der Mitte des Ziegels ab: nach unten, wenn er tiefer als der Ziegel ist, nach oben, wenn er höher ist. Ein Ball kann einen Ziegel von oben treffen, nachdem er durch eine Lücke gerutscht ist.

if position.y > body.position.y:
	velocity.y = abs(velocity.y)
else:
	velocity.y = -abs(velocity.y)

Drehe velocity.y nicht um. Wenn der Ball zwei Ziegel gleichzeitig berührt, heben sich zwei Richtungswechsel auf.

challenge icon

Aufgabe

Mittel

Lass den Ball die Ziegelsteine zerbrechen.

  1. Füge in _on_body_entered ein elif für Körper in der Gruppe bricks hinzu.
  2. Rufe body.smash() auf.
  3. Lass den Ball nach unten abprallen, wenn er sich unterhalb der Mitte des Ziegelsteins befindet, und nach oben, wenn er sich oberhalb befindet.

Drücke auf „Spielen“: Die Ziegelsteine zerplatzen nacheinander. Drücke anschließend auf „Prüfen“.

Probier es selbst

extends Area2D

var velocity = Vector2(110, -280)

func _ready():
	body_entered.connect(_on_body_entered)

func _physics_process(delta):
	position += velocity * delta
	if position.x < 8 or position.x > 632:
		velocity.x = -velocity.x
	if position.y < 42:
		velocity.y = -velocity.y

func _on_body_entered(body):
	if body.name == "Paddle":
		velocity.x = (position.x - body.position.x) * 5
		velocity.y = -abs(velocity.y)

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground