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.
Aufgabe
MittelLass den Ball die Ziegelsteine zerbrechen.
- Füge in
_on_body_enteredeineliffür Körper in der Gruppebrickshinzu. - Rufe
body.smash()auf. - 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