Menu
CoddyTech

Sin corazones

Parte de la sección Proyectos del Journey de Godot de Coddy. Lección 35 de 36.

Cuando desaparece el último corazón, se acaba el juego. Comprueba si el valor es cero justo después de ocultar el corazón:

if health == 0:
	$HUD/Message.text = "Game Over"
	get_tree().paused = true

El héroe y el guardia son Pausable, así que se congelan. Main es Always, así que su _process sigue ejecutándose. Inicia una partida nueva cuando el jugador pulsa Enter:

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

Al volver a cargar, todo se restablece: tres corazones, la llave en el suelo y la puerta cerrada.

challenge icon

Desafío

Intermedio

Termina el juego cuando se acaben los corazones.

  1. Cuando health llegue a 0, muestra Game Over en $HUD/Message y pausa el juego.
  2. Mientras esté en pausa, Enter (action) quita la pausa y vuelve a cargar la escena.

Presiona «Jugar» y pierde tres corazones: aparece Game Over. Enter comienza de nuevo. Después, «Comprobar».

Pruébalo tú mismo

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 _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()

Todas las lecciones de Proyectos

Practica por tu cuenta: Playground de Godot