Menu
CoddyTech

À court de cœurs

Fait partie de la section Projets du Journey Godot de Coddy. Leçon 35 sur 36.

Quand le dernier cœur a disparu, la partie est terminée. Vérifie si la valeur est égale à zéro juste après avoir masqué le cœur :

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

Le héros et le garde sont suspendables, ils se figent donc. Main est réglé sur « Toujours », donc son _process continue de s’exécuter. Il démarre une nouvelle partie quand le joueur appuie sur Entrée :

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

Le rechargement réinitialise tout : trois cœurs, la clé au sol et la porte verrouillée.

challenge icon

Défi

Moyen

Termine la partie lorsque tu n’as plus de cœurs.

  1. Lorsque health atteint 0, affiche Game Over dans $HUD/Message et mets le jeu en pause.
  2. Pendant la pause, appuie sur Entrée (action) pour reprendre le jeu et recharger la scène.

Appuie sur « Jouer » et perds trois cœurs : le message Game Over s’affiche. Appuie sur Entrée pour recommencer. Puis appuie sur « Vérifier ».

Essayez vous-même

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

Toutes les leçons de Projets

Entraînez-vous par vous-même : Playground Godot