La porte verrouillée
Fait partie de la section Projets du Journey Godot de Coddy. Leçon 28 sur 33.
Une Door bloque le passage vers les escaliers. C’est un StaticBody2D, donc move_and_slide arrête le héros devant elle. Juste devant 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 seulement le rendu. Sa forme de collision bloquerait toujours le héros.
Défi
MoyenDans main.gd, connecte $DoorZone.body_entered. Lorsqu’un corps entre et que has_key est vrai, supprime $Door et $DoorZone.
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
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Projets
1Projet : Breakout
Raquette de BreakoutGarder la raquette à l’écran4Projet : Exploration de donjon
Parcourir le donjonRamasser la cléEntraînez-vous par vous-même : Playground Godot