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.
Défi
MoyenOuvre la porte avec la clé.
- Dans
main.gd, connecte$DoorZone.body_enteredà une fonction. - Lorsqu’un corps entre et que
has_keyest vrai, supprime$Dooret$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
1Projet : Casse-briques
La raquetteGarder la raquette à l’écran4Projet : Exploration de donjon
Parcourir le donjonRamasser la cléEntraînez-vous par vous-même : Playground Godot