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.
Aufgabe
SchwerBeende das Spiel, wenn das letzte Leben aufgebraucht ist.
- Zeige in
_on_missed, wennlives0 ist,Game Overin$HUD/Messagean und pausiere das Spiel. - Füge
_processhinzu: Wenn das Spiel pausiert ist undactiongerade 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