Menu
CoddyTech

Breakout: Spiel vorbei

Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 9 von 36.

Drei Fehlschüsse sollten das Spiel beenden. Bei null Leben zeigst du „Game Over“ an und pausierst mit get_tree().paused = true. Das Paddel und der Ball sind Pausable, also frieren sie ein. Main ist Always, läuft also weiter und kann Enter abfragen:

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 Szenenbaum, nicht zur Szene. Deshalb würde eine neu geladene Szene pausiert starten.

challenge icon

Aufgabe

Schwer

Beende das Spiel, wenn das letzte Leben aufgebraucht ist.

  1. Zeige in _on_missed, wenn lives 0 ist, Game Over in $HUD/Message an und pausiere das Spiel.
  2. Füge _process hinzu: Wenn das Spiel pausiert ist und action gerade gedrückt wurde, hebe die Pause auf und lade dann die Szene neu.

Drücke auf „Spielen“ und verpasse drei Bälle: Game Over wird angezeigt und der Ball bleibt stehen. Mit Enter geht es weiter. Drücke dann auf „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)]

var score = 0
var lives = 3

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"
	$Ball.missed.connect(_on_missed)
	$HUD/Lives.text = "Lives: 3"

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

func _on_missed():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground