Menu
CoddyTech

Breakout-Leben

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

Wenn der Schläger den Ball verfehlt, fällt der Ball unten heraus. Gib dem Spieler drei Leben.

In ball.gd wurde ein Ball unterhalb von y = 380 verfehlt. Sende ein missed-Signal und serviere den Ball erneut oberhalb des Schlägers.

if position.y > 380:
	missed.emit()
	position = Vector2(320, 290)
	velocity = Vector2(110, -280)

Zähle in main.gd die Leben herunter. Zeige bei null „Game Over“ an und pausiere mit get_tree().paused = true. Der Schläger und der Ball sind Pausable, also frieren sie ein. Main ist Always, läuft also weiter und kann die Eingabetaste lesen:

func _process(delta):
	if get_tree().paused and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

Hebe die Pause auf, bevor du die Szene neu lädst. Die Pause gehört zum Baum, nicht zur Szene, daher würde eine neu geladene Szene eingefroren starten.

challenge icon

Aufgabe

Schwer
  1. Füge in ball.gd signal missed hinzu. Wenn position.y größer als 380 ist, löse das Signal aus und setze den Ball mit der Geschwindigkeit (110, -280) zurück auf (320, 290).
  2. Beginne in main.gd mit var lives = 3 und zeige Lives: 3 in $HUD/Lives an. Jeder Fehlwurf kostet ein Leben und aktualisiert die Beschriftung.
  3. Zeige bei 0 Leben Game Over in $HUD/Message an und pausiere das Spiel.
  4. Während das Spiel pausiert ist, hebt Enter (die Taste action) die Pause auf und lädt die Szene neu.

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)]

var score = 0

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)
	$Ball.brick_broken.connect(_on_brick_broken)
	$HUD/Score.text = "Score: 0"

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score
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