Breakout-Punktestand
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 7 von 36.
Jeder Ziegelstein ist 10 Punkte wert. Der Ball weiß, wann er einen zerstört, und main.gd führt den Punktestand. Ein Signal verbindet beide. Der Ball sendet es für jeden zerstörten Ziegelstein aus, und das Hauptskript lauscht darauf.
In ball.gd deklarierst du das Signal oben und sendest es neben smash() aus:
signal brick_broken
# in _on_body_entered, nach body.smash():
brick_broken.emit()In main.gd verbindest du es in _ready und addierst die Punkte in der aufgerufenen Funktion:
func _on_brick_broken():
score += 10
$HUD/Score.text = "Score: %d" % scoreDas Label befindet sich in einem CanvasLayer namens HUD. Setze es auch in _ready auf Score: 0, sonst bleibt es leer, bis der erste Ziegelstein zerstört wird.
Aufgabe
MittelErhalte 10 Punkte für jeden Stein.
- Füge in
ball.gdsignal brick_brokenhinzu und löse das Signal aus, wenn ein Stein zerbricht. - Füge in
main.gdvar score = 0hinzu und zeigeScore: 0in$HUD/Scorein_readyan. - Verbinde
$Ball.brick_brokenmit einer Funktion, die 10 hinzufügt und den Punktestand anzeigt.
Drücke „Spielen“ und zerbrich einen Stein: Das Label zeigt Score: 10 an. Drücke dann „Prüfen“.
Probier es selbst
extends Node2D
const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]
func _ready():
for row in 5:
for column in 8:
var brick = BRICK.instantiate()
brick.position = Vector2(68 + column * 72, 60 + row * 26)
brick.color = COLORS[row]
add_child(brick)
Alle Lektionen in Projekte
Übe selbstständig: Godot-Playground