Die Steine zerstören
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 6 von 33.
Der Ball fliegt durch die Ziegel. Ziegel sind ebenfalls Körper, und jeder einzelne ist in der Gruppe bricks. is_in_group unterscheidet einen Ziegel vom Schläger.
Jeder Ziegel hat eine smash()-Funktion. Sie lässt den Ziegel in Funken zerbersten 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 sich unterhalb des Ziegels befindet, nach oben, wenn er sich oberhalb befindet. 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 Umkehrungen gegenseitig auf.
Aufgabe
MittelFüge in _on_body_entered ein elif für Körper in der Gruppe bricks hinzu:
- 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.
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)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Projekte
Übe selbstständig: Godot-Playground