Me revoici avec un problème concernant la création de dialogues. Je voudrais créer un modèle de dialogues gérés non pas au moyen d’un chronomètre, mais par l’appui de la touche espace (en clair, c’est le joueur qui décide quand il veut passer à la réplique suivante en appuyant sur la barre “Espace”, ce qui lui permet de prendre tout son temps pour lire des répliques qui peuvent être parfois longues, comme dans un jeu de rôles avec une intrigue élaborée). Ne vous moquez pas du fond vert tout moche et de ces bulles de dialogue peu esthétiques, je suis en train d’essayer de reproduire différents systèmes de jeu de RPG avec Game Develop, je fabrique des décors et des objets sans soin juste pour les besoins de mes tests.
Au début, j’avais essayé d’introduire une variable de scène, mais comme j’ai toujours des difficultés avec les variables, et que je trouvais qu’elle compliquait beaucoup mes événements, j’ai essayé de faire sans.
J’ai tenté ceci :
Et là, j’obtiens un résultat bizarre. Lorsque je clique sur “jouer” pour tester la scène, je n’obtiens rien d’autre que l’objet “Replique1” qui s’affiche (en appuyant sur Espace, il ne se passe rien). Par contre, si j’essaie de la “jouer dans une fenêtre”, ça fonctionne à moitié : j’ai au départ l’objet “Replique1” qui s’affiche, lorsque j’appuie sur la barre d’espace, j’ai la réplique 2 qui s’affiche mais pas moyen ensuite d’avoir la réplique 3…
D’où 2 questions :
4ian, pourquoi ma scène ne fonctionne pas de la même façon lorsqu’elle est jouée directement, par rapport au mode “dans une fenêtre” ? Est-ce un bug, ou un problème de stabilité de la version ? (sur un autre projet, j’ai la plupart de mes sprites qui ne s’affichent plus, sans raison apparente, alors que tout fonctionnait bien avant la dernière version que j’ai téléchargée, celle qui inaugurait les boîtes 3D)
est-ce que je suis sur la bonne voie avec mes événements ou bien ma logique n’est pas correcte ?
Essaye plutôt de mettre tes 3 réplique dans un seul objet a l’aide plusieurs animations
tu test si l’animation est = à 0, 1, 2 ect…
donc sinon fait plutôt tes test au niveau de l’animation
J’ai corrigé un bug avec le test de la scène dans une fenêtre, je te conseille pour le moment de ne tester que directement dans l’éditeur. Tu pourra réessayer quand la prochaine version sera sortie pour voir si c’est mieux.
Mais la différence entre les deux peut peut être s’expliquer par la suite de mon message.
Pour la première condition, tu peux mettre “<” à la place de “>=” et enlever l’activation du contraire de la condition, mais c’est une simple question de gout.
Ensuite, j’ai un petit doute quand à l’action “Enlever la pause du chronomètre ChronoDialogue”. Il faut auparavant que tu aie bien mis en pause le chronomètre.
Mais le problème majeur vient à mon avis de la première condition. Quand tu appuie une première fois sur Espace, la “réplique1” est supprimée, et une deuxième est créée. Le problème, c’est qu’alors le nombre de Réplique1 n’est pas >= à 1, c’est à dire que la première condition est toujours validée. Et un objet Replique1 est recréé.
Je ne sais pas si tu saisis le problème ? A mon avis, tu dois pouvoir le vérifier dans le debugger, tu as, si tu appuie sur Espace, un objet “Réplique2” qui va se créer, et un objet “Réplique1” qui va aussi réapparaitre.
Et la différence entre le mode “test fenêtré” et le mode “dans l’éditeur” peut peut être simplement venir qu’à un moment, c’est “Réplique1” qui s’est affiché au dessus de l’autre.
Merci pour ta suggestion Colin, je réfléchirai pour voir s’il vaut mieux utiliser des objets ou des animations du même objet.
Et merci beaucoup pour tes explications, 4ian ; grâce à elles, j’ai parfaitement compris d’où venait le problème et elles m’ont rapidement mené vers la solution. Je vais la donnerr pour ceux que ça intéresse.
En fait j’ai créé un groupe d’objets qui contient l’ensemble des répliques de mon dialogue (j’ai nommé ce groupe “Dialogue1”). Et j’ai modifié simplement ma première condition (4ian avait raison, c’était elle qui posait problème). On obtient donc :
Et ça fonctionne impeccablement (sans être obligé d’utiliser une variable…).
Note : en fait, l’action “enlever la pause d’un chronomètre” n’a pas l’air d’avoir d’incidence. Elle ne servait à rien, c’est plus “propre” de l’enlever.