Menu
CoddyTech

La porte verrouillée

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

Une Door bloque le chemin vers les escaliers. C’est un StaticBody2D, donc move_and_slide arrête le héros contre elle. Devant elle se trouve DoorZone, une Area2D un peu plus large que la porte, de sorte que le héros l’atteint en premier.

Lorsque le héros entre dans la zone avec la clé, la porte s’ouvre :

func _on_door_zone_body_entered(body):
	if has_key:
		$Door.queue_free()
		$DoorZone.queue_free()

Supprime aussi la zone. Sinon, le héros y entrera de nouveau, $Door n’existera plus et le jeu s’arrêtera avec le message Node not found.

Supprime la porte avec queue_free(). hide() arrête uniquement son affichage. Sa forme de collision continuerait de bloquer le héros.

challenge icon

Défi

Moyen

Ouvre la porte avec la clé.

  1. Dans main.gd, connecte $DoorZone.body_entered à une fonction.
  2. Lorsqu’un corps entre et que has_key est vrai, supprime $Door et $DoorZone.

Appuie sur « Jouer », prends la clé et marche jusqu’à la porte : elle s’ouvre. 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)

func _on_key_body_entered(body):
	has_key = true
	$Key.queue_free()
	$HUD/KeyIcon.visible = true

Toutes les leçons de Projets

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