Aus dem Dungeon entkommen
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 33 von 33.
Die Treppe in der hinteren Ecke führt nach draußen. Sie ist eine Area2D namens Exit. Wenn der Held sie betritt, gewinnt der Spieler:
func _on_exit_body_entered(body):
$HUD/Message.text = "You Escaped!"
get_tree().paused = trueVerbinde sie in _ready mit den anderen Signalen. Enter startet auch nach einem Sieg ein neues Spiel, da beim Neustart nur geprüft wird, ob das Spiel pausiert ist.
Spiele dein Dungeon. Ändere es dann: Füge eine zweite Wache hinzu, verschiebe die Mauern oder verstecke den Schlüssel an einem schwierigeren Ort.
Aufgabe
EinfachVerbinde in main.gd $Exit.body_entered mit einer Funktion, die You Escaped! in $HUD/Message anzeigt und das Spiel pausiert.
Probier es selbst
extends Node2D
var has_key = false
var health = 3
func _ready():
$Key.body_entered.connect(_on_key_body_entered)
$DoorZone.body_entered.connect(_on_door_zone_body_entered)
$Enemy.body_entered.connect(_on_enemy_body_entered)
func _process(delta):
if get_tree().paused and Input.is_action_just_pressed("action"):
get_tree().paused = false
get_tree().reload_current_scene()
func _on_key_body_entered(body):
has_key = true
$Key.queue_free()
$HUD/KeyIcon.visible = true
func _on_door_zone_body_entered(body):
if has_key:
$Door.queue_free()
$DoorZone.queue_free()
func _on_enemy_body_entered(body):
health -= 1
$HUD/Hearts.get_child(health).visible = false
$Hero.flash()
if health == 0:
$HUD/Message.text = "Game Over"
get_tree().paused = true
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Projekte
1Projekt: Breakout
Breakout-SchlägerDen Schläger auf dem Bildschirm halten4Projekt: Dungeon-Crawler
Durch den Dungeon gehenDen Schlüssel aufhebenÜbe selbstständig: Godot-Playground