Menu
CoddyTech

Breakout-Punktzahl

Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 7 von 33.

Jeder Stein ist 10 Punkte wert. Der Ball weiß, wann er einen Stein zerstört, und main.gd führt den Punktestand. Ein Signal verbindet sie. Der Ball sendet es für jeden zerstörten Stein aus, und das Hauptskript hört darauf.

Deklariere das Signal in ball.gd ganz oben und sende es neben smash() aus:

signal brick_broken

# in _on_body_entered, nach body.smash():
brick_broken.emit()

Verbinde es in main.gd in _ready und addiere die Punkte in der aufgerufenen Funktion:

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score

Das Label befindet sich in einem CanvasLayer namens HUD. Setze es auch in _ready auf Score: 0, sonst bleibt es bis zum ersten Stein leer.

challenge icon

Aufgabe

Mittel
  1. Füge in ball.gd signal brick_broken hinzu und löse das Signal aus, wenn ein Stein zerbricht.
  2. Füge in main.gd var score = 0 hinzu, verbinde $Ball.brick_broken mit einer Funktion, die den Wert um 10 erhöht und Score: 10, Score: 20, ... in $HUD/Score anzeigt.
  3. Zeige Score: 0 an, wenn das Spiel startet.

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)
quiz iconTeste dich selbst

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