Menu
CoddyTech

Trois cœurs

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

Toucher le garde devrait faire perdre un cœur. Les trois cœurs dans la barre supérieure sont Heart1, Heart2 et Heart3, enfants de $HUD/Hearts. Le garde est une Area2D, donc son signal body_entered se déclenche lorsqu’il touche le héros :

func _on_enemy_body_entered(body):
	health -= 1
	$HUD/Hearts.get_child(health).visible = false

get_child(i) renvoie un nœud enfant selon sa position, en comptant à partir de 0. Après le premier coup, health vaut 2, et get_child(2) est Heart3. Les cœurs disparaissent de la droite.

body_entered se déclenche une fois par contact. Un héros qui reste sur le chemin du garde perd un cœur chaque fois que celui-ci revient.

challenge icon

Défi

Moyen

Fais en sorte que le garde fasse perdre un cœur au héros.

  1. Dans main.gd, ajoute var health = 3 et connecte $Enemy.body_entered.
  2. À chaque contact, diminue health de un, puis masque $HUD/Hearts.get_child(health).

Appuie sur « Jouer » et touche le garde : le cœur le plus à droite disparaît. Puis appuie sur « Vérifier ».

Essayez vous-même

extends Node2D

var has_key = false

func _ready():
	$Key.body_entered.connect(_on_key_body_entered)
	$DoorZone.body_entered.connect(_on_door_zone_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()

Toutes les leçons de Projets

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