Neustart per Tastendruck
Teil des Abschnitts Spielregeln der Godot-Journey von Coddy. Lektion 15 von 29.
Diese Zeile verwirft die Szene und lädt sie frisch aus ihrer Datei:
get_tree().reload_current_scene()Das neue Spiel beginnt mit drei Leben, dem Spieler auf dem grünen Quadrat und ausgeblendetem „Game Over“.
Main ist ebenfalls pausiert, deshalb bekommt sein _process die Taste nie mit. Setze den eigenen process_mode von Main auf Node.PROCESS_MODE_ALWAYS. Die untergeordneten Elemente übernehmen diese Einstellung, mit Ausnahme des Spielers. Die Szene setzt den Spieler auf „Pausierbar“, sodass er weiterhin anhält.
Beim erneuten Laden wird das Spiel nicht fortgesetzt. Setze get_tree().paused = false, bevor du neu lädst, andernfalls beginnt das neue Spiel pausiert.
Aufgabe
EinfachLass den Spieler nach dem Spielende E drücken, um erneut zu spielen.
- Setze in
_ready()denprocess_modedieses Knotens selbst aufNode.PROCESS_MODE_ALWAYS(kein$). - Wenn in
_process()lives0 ist undactiongerade gedrückt wurde, hebe die Pause des Spiels auf und lade dann die Szene neu.
Drücke „Spielen“, verliere drei Leben und drücke E: Ein neues Spiel beginnt mit Lives: 3. Drücke dann „Prüfen“.
Probier es selbst
extends Node2D
var lives = 3
func _ready():
$HUD/Lives.text = "Lives: %d" % lives
$Player.hurt.connect(_on_player_hurt)
$Blink.timeout.connect(_on_blink_timeout)
$Blink.process_mode = Node.PROCESS_MODE_ALWAYS
func _process(delta):
pass
func _on_player_hurt():
lives -= 1
$HUD/Lives.text = "Lives: %d" % lives
if lives == 0:
$HUD/GameOver.visible = true
$HUD/Hint.visible = true
get_tree().paused = true
func _on_blink_timeout():
if lives == 0:
$HUD/GameOver.visible = not $HUD/GameOver.visible
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Spielregeln
Übe selbstständig: Godot-Playground