Créer un système de dialogue dans Godot avec GDScript
MaisonMaison > Blog > Créer un système de dialogue dans Godot avec GDScript

Créer un système de dialogue dans Godot avec GDScript

Jul 06, 2023

Ajoutez de la personnalité et du contexte à vos personnages grâce à un système de dialogue percutant.

Dans le développement de jeux, un gameplay engageant et une narration captivante sont essentiels pour créer des expériences mémorables. Un outil puissant qui peut vous aider à y parvenir est un système de dialogue.

Grâce à un système de dialogue bien mis en œuvre, les personnages peuvent communiquer, partager des informations et interagir avec le joueur, ajoutant ainsi de la profondeur et de l'immersion à votre jeu.

Commencez par créer les bases de votre jeu. Pour cet exemple, configurez un environnement 2D simple avec un personnage contrôlable qui peut se déplacer à l'aide des touches fléchées.

Le code utilisé dans cet article est disponible dans ce référentiel GitHub et vous pouvez l'utiliser gratuitement sous la licence MIT.

Commencez par créer une nouvelle scène pour votre personnage joueur. Dans cette scène, ajoutez les composants nécessaires. Créer unCaractèreCorps2D nœud pour représenter le corps du personnage du joueur. Joindre unCollisionForme2Davec une forme rectangulaire pour définir la zone de collision du joueur.

Ajoutez désormais le mouvement des personnages et l'interaction avec les plates-formes à l'aide de GDScript. Remplacez le script par défaut du nœud CharacterBody2D par le code suivant :

Ce script permet à votre personnage de se déplacer vers la gauche, la droite, le haut et le bas en fonction des entrées des touches fléchées. Lemove_and_collideLa fonction garantit que le personnage interagit avec les plates-formes et répond aux collisions.

Maintenant, vous pouvez commencer à créer le système de dialogue. La première étape consiste à ajouter une boîte de dialogue qui affichera du texte lorsque votre personnage interagit avec des objets ou des PNJ spécifiques.

Dans tonCaractèreCorps2Dscript, introduisez quelques variables supplémentaires pour gérer la boîte de dialogue et son contenu :

Leboîte de dialoguesera chargé d'afficher le texte du dialogue, tandis que lefermer_boutonpermettra aux joueurs de fermer la boîte de dialogue en cas de besoin.

Dans le_prêtfonction, créez et initialisez la boîte de dialogue :

Vous pouvez maintenant vous concentrer sur l'affichage du texte dans la boîte de dialogue. Vous pouvez faire en sorte que le texte s'étende sur plusieurs lignes et le faire défiler, révélant une ligne de texte à la fois.

Modifiez votre_processus_physiquefonction pour gérer l'affichage des lignes de dialogue :

Ce segment de code vérifie si leminuteur_ligne est supérieur à 0. Si tel est le cas, cela diminue le temporisateur de la valeur delta. Si le minuteur n'est pas actif et qu'il y a d'autres lignes de dialogue à afficher, il appelle leshow_next_dialogue_linefonction.

Mettre en œuvre leshow_next_dialogue_linefonctionner comme suit :

Cette fonction met à jour le texte dans la boîte de dialogue avec la ligne de dialogue actuelle et incrémente leligne_actuelle indice. Leminuteur_lignegarantit que chaque ligne est affichée pendant une brève période avant de passer à la ligne suivante.

Désormais, vous pouvez donner aux joueurs la possibilité de fermer la boîte de dialogue et de continuer à jouer. Faites cela avec un bouton de fermeture qui, lorsqu'il appuie dessus, masque la boîte de dialogue et permet au joueur de reprendre son voyage.

Tout d'abord, modifiez le_prêtfonction pour créer un bouton de fermeture et attacher sa fonctionnalité.

Ce code crée une instance duBouton classe et personnalise son apparence et sa position. Il relie également lepresséfaire signe au_on_close_button_pressedfonction.

Maintenant, implémentez le_on_close_button_pressed fonction. Dans cette fonction, définissez la visibilité de la boîte de dialogue et du bouton de fermeture surFAUX . Cela masque efficacement l'interface de dialogue au joueur.

N'oubliez pas de réinitialiser leligne_actuelleindex à 0 pour garantir que le dialogue recommence depuis le début la prochaine fois que le joueur initie une conversation :

Grâce à ces changements, les joueurs pourront engager un dialogue et fermer la boîte de dialogue lorsqu'ils seront prêts à continuer à explorer ou à interagir avec le monde du jeu.