View on GitHub

Journal de développement - Mon RPG Zelda

Suivi du développement de mon jeu de type Zelda avec Godot Engine

💬 Créer des bulles de dialogue dans une scène vivante

📘 Voir le lexique de la Team Padawan – pour bien comprendre les mots comme @onready, await, Area2D

Bienvenue dans cette leçon où l’on apprend à créer des bulles de dialogue visuelles pour enrichir l’univers de ton jeu !
On va suivre une petite scène mignonne dans un village 🌸 :

🧩 Cette leçon s’appuie sur :


🎭 Contexte

👧 Un petit enfant marche automatiquement entre deux points :

👉 Lorsqu’il atteint sa maman ou le poussin, il affiche une petite bulle ❤️.
Et lorsque l’enfant s’approche, la maman affiche une vraie bulle avec du texte animé


👶 Niveau Débutant – Afficher une bulle image simple (❤️)

🎯 Objectif

Quand l’enfant atteint un point précis (maman ou poussin), il affiche une bulle contenant juste une image (ex : un cœur ❤️)


📐 Structure de la scène Enfant

Enfant (CharacterBody2D)
├── AnimatedSprite2D
├── CollisionShape2D
├── AudioStreamPlayer2D
├── Control (la bulle)
│   └── Panel (avec une texture cœur)

💡 Mets Control.visible = false au départ


🧠 Script kids.gd

if global_position.distance_to(target_pos) < 2.0:
    en_pause = true
    $Control.visible = true  # Affiche le cœur
    animated_sprite_2d.stop()
    await get_tree().create_timer(3.0).timeout
    $Control.visible = false
    animated_sprite_2d.play()
    await attendre_et_changer()

✅ Résultat

L’enfant s’arrête près de sa maman ou du poussin, montre une petite bulle ❤️, puis continue sa route.


✨ Niveau Intermédiaire – Afficher un texte animé (Tween + Label)

🎯 Objectif

Quand un PNJ détecte qu’un autre s’approche (via une Area2D), il affiche une bulle avec texte qui apparaît et disparaît en fondu.


📐 Structure de la scène Maman

Maman (StaticBody2D)
├── AnimatedSprite2D
├── CollisionShape2D
├── Area2D
│   └── CollisionShape2D
├── BubbleUI (Control)
    ├── PanelVideEtInvisible
    └── PanelText
        └── Text1 (Label)

💡 Mets BubbleUI.visible = false au départ


🧠 Script maman.gd

@onready var bubble_ui: Control = $BubbleUI

func _on_area_2d_body_entered(body: Node2D) -> void:
    if body.name == "Enfant":
        show_bubble()
        await get_tree().create_timer(2.5).timeout
        await hide_bubble()

func show_bubble():
    bubble_ui.visible = true
    bubble_ui.modulate.a = 0.0
    var tween = create_tween()
    tween.tween_property(bubble_ui, "modulate:a", 1.0, 0.4)

func hide_bubble():
    var tween = create_tween()
    tween.tween_property(bubble_ui, "modulate:a", 0.0, 0.4)
    await tween.finished
    bubble_ui.visible = false

💬 Pour changer le texte :

$BubbleUI/PanelText/Text1.text = "Tu as vu ce petit poussin ? Il est né ce matin 🐣"

🧋 Résumé des deux méthodes

Méthode Type de bulle Contenu Effets Déclencheur
Débutant Image simple ❤️ Instantané Quand l’enfant atteint un point
Intermédiaire Texte animé Dialogue Fondu In/Out Quand le joueur entre dans une zone