🖥️ Créer un HUD simple avec CanvasLayer + Label
Dans ce guide, on va apprendre à créer un HUD basique dans Godot 4.4, avec un CanvasLayer
contenant un Label
, pour afficher des messages simples comme “+1 Pomme” ou “Clé obtenue 🔑”.
🎯 Objectif
- Comprendre la différence entre
Node2D
etCanvasLayer
pour l’interface - Créer une scène
HUD.tscn
indépendante - Ajouter un
Label
qui peut être mis à jour depuis d’autres scripts - Afficher un message temporaire lors d’un événement (ex: ramassage d’objet)
🧱 Étapes de construction
1️⃣ Crée une nouvelle scène HUD.tscn
- Node principal :
CanvasLayer
→ nomme-leHUD
- Enfant :
Label
→ nomme-leMessageLabel
💡 Le CanvasLayer
permet de garder l’interface visible, même si la caméra bouge.
2️⃣ Positionne le Label
- Place-le en haut de l’écran, au centre ou là où tu veux afficher les messages
- Tu peux le styliser : couleur, taille, police, etc.
3️⃣ Ajoute un script HUD.gd
extends CanvasLayer
@onready var message_label = $MessageLabel
func afficher_message(texte: String):
message_label.text = texte
4️⃣ Instancie le HUD dans ta scène principale
Dans MainScene.tscn
, ajoute un Node
HUD
si ce n’est pas déjà fait.
Tu peux aussi instancier la scène HUD.tscn
via l’éditeur ou par code.
5️⃣ Appelle le HUD depuis un autre script
Par exemple, dans le script de la pomme :
func _on_body_entered(body):
if body.name == "Player":
var hud = get_tree().root.get_node("MainScene/HUD")
hud.afficher_message("🍏 +1 Pomme")
⚠️ Attention à bien adapter le chemin "MainScene/HUD"
à ton propre projet.
💡 Astuce bonus
Tu peux ajouter un Timer
pour effacer le message après 2 secondes :
func afficher_message(texte: String):
message_label.text = texte
await get_tree().create_timer(2.0).timeout
message_label.text = ""
🧪 Exercices
- Change la couleur et la taille du
Label
- Fais apparaître plusieurs types de messages (ex: “Clé obtenue”, “Vous êtes soigné”, etc.)
- Essaie de rendre le message animé avec un
Tween
✨
👩💻 Écrit par : Lysdora
🎮 Projet : mon-rpg-zelda