| module pour une animation des pnjs (personnages non joueurs) | |
|
|
Auteur | Message |
---|
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: module pour une animation des pnjs (personnages non joueurs) Jeu 5 Fév 2015 - 14:59 | |
| Bonjour, Alors voici mon souhait ou ma problématique étant l'animation de personnage non joueur en fond, pour rendre les modules plus vivant. Je me retrouve devant un problème, c'est que le jeu donne l'impression d'être en pause. Il est très simple d'animer des objets en continue ou même un background, parcontre, pour animer des perso avec l'option animate. noblock en exécution automatique, ou bien walk, ça ne fonctionne pas. Les personnages activent leurs animations uniquement pendant un dialogue mais sinon rien. Je voudrais des pnjs se baladant et s'activant en continue et qu'il serait possible de solliciter par exemple en allant leur causer. La seule solution que j'ai trouvé (qui est lourde) c'est d'utiliser des objs comme personnages et de les animer en continue ou bien dès qu'on marche sur une zone et de faire en sorte qu'ils se changent en perso (donc d'effacer momentanément l'object ) avec la même coordonné quand on clique sur "parler", mais c'est bof bof ! voili |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Jeu 5 Fév 2015 - 17:16 | |
| Je suis pas bien sur de comprendre ton soucis. On peut animer ou faire balader des persos en mode noBlock en utilisant soigneusement repeatidly_execute_always et des jolis if un peu partout. Tu as un cas concret a nous soumettre ? |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Jeu 5 Fév 2015 - 19:06 | |
| Moi j'ai bien l'impression que le problème vient justement d'un déclenchement répété de l'animation (probablement dans repeatedly_execute, sans le "always"), ce qui justement la neutralise (problème assez courant). Lors d'un dialogue, seules les commandes dans repeatedly_execute_always continuent à être exécutées, ce qui expliquerait pourquoi (sous l'hypothèse que Animate ne se trouve pas dans le always) l'animation se lance visiblement : durant le dialogue, on cesse de relancer l'animation en permanence. Concernant un déplacement des personnages en arrière-plan, il faut le coder soi-même, mais je me demande s'il y a pas des modules développés sur le forum anglophone pour faciliter la tâche (il existe notamment des modules de mise en file d'attente pour les déplacements -- "queue"/"queuing" en anglais). _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Ven 6 Fév 2015 - 10:43 | |
| Oh, je vais tester avec le always ! D'ailleurs, est-il possible de rajouter la fonction avec le always, dans les script room ? |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Ven 6 Fév 2015 - 12:02 | |
| Alors après plusieurs test , voici mes problèmes :
Effectivement, en inscrivant le déplacement du personnage dans le repeatedly_execute de la room, ça le bloque probablement pour la raison que tu as donné car lorsqu'on lance un dialogue il se déplace.
Parcontre, comment utiliser repeatedly_execute_always ?
Mon problème c'est que je ne sais pas trop comment faire un déplacement à entrer dans le repeatedly_execute_always sans que ça fasse friser le jeu !
J'ai tenté avec un système de bool et des While. En gros, tant que la bool est en false le perso fait Walk x+1 , arrivé à un certain point ça passe en true et tant que c'est en true le perso fait Walk x-1 ! Croyez le non ou pas, ça bloque le jeu (sans causer d'erreur pour autant)
En mettant plus des if avec un système de bool , ça lance l'animation de déplacement mais le perso fait du sur place
PIRE avec le repeatedly_execute_always, l'animation de fond d'un perso qui avant fonctionnait uniquement lorsqu'on lance un dialogue, là, ne fonctionne plus du tout du tout.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Ven 6 Fév 2015 - 15:29 | |
| C'est parce que tu prends pas le problème du bon bout. Je vais essayer d'expliquer plus clairement. Tu observes les animations se figer parce que tu les relances constamment, à chaque cycle de jeu. Ainsi les personnages restent bloqués sur la même image d'animation, encore et encore. De même pour les déplacements, ils restent bloqués sur l'étape initial de la marche, et ne passent jamais au véritable déplacement. La solution c'est de ne plus relancer les animations et déplacements à chaque cycle de jeu. En cela utiliser repeatedly_execute_always empire les choses : les animations sont alors relancées à chaque cycle de jeu même lors des dialogues. Ton idée d'utiliser des if et des bool est sur la bonne voie. L'idée c'est de vérifier que le personnage ne se déplace plus ou n'est plus animé avant de relancer un déplacement ou une animation. Pour cela, les propriétés Moving et Animating te seront probablement utiles. Un exemple rapide d'un personnage nommé cPNJ qui se déplacera de gauche à droite : - Code:
-
function repeatedly_execute_always() { if (!cPNJ.Moving) cPNJ.Walk(Room.Width-cPNJ.x, cPNJ.y, eNoBlock); } _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Sam 7 Fév 2015 - 12:44 | |
| Oh YES !
Et dire qu'il suffisait d'écrire un if(!cEGO.Moving) ou un if(!cEGO.Animating)
Ca marche bien Merci
Mais du coup, j'y pense tu pourrais m'expliquer comment se fait-il que cPNJ.Walk(Room.Width-cPNJ.x, cPNJ.y, eNoBlock); fasse bouger le personnage de droite à gauche ?
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Sam 7 Fév 2015 - 15:19 | |
| - filoulefilou a écrit:
- Mais du coup, j'y pense tu pourrais m'expliquer comment se fait-il que cPNJ.Walk(Room.Width-cPNJ.x, cPNJ.y, eNoBlock); fasse bouger le personnage de droite à gauche ?
C'est une petite astuce. Mettons que ta pièce fasse 1000px de large, et qu'au début du jeu cPNJ.x vaut 100. Alors la commande Walk lui dira de marcher jusqu'à 1000-100, c'est-à-dire à 900. Le personnage aura arrêté de bouger au moment où il aura atteint cette coordonnée, et alors la commande se relancera. Mais cette fois, elle dira au personnage de marcher à 1000-900, c'est-à-dire à 100. Tu vois le côté cyclique maintenant. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Sam 21 Fév 2015 - 11:23 | |
| J'ai aussi découvert la fonction SayBackground (que je n'avais jamais utilisée) , c'est très pratique aussi (je pensais naïvement quelle permettait d'afficher un texte dans un cadre)
En fait non, elle permet d'afficher un texte sans mettre le jeu en pause. Funny !
Merci beaucoup (et encore une fois) pour ton aide Kitai (même si j'ai pas finis de te solliciter (";...;") ) |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) Sam 21 Fév 2015 - 12:50 | |
| Perso moi j'utilise ce code qui fonctionne en boucle sans blocage - Code:
-
function room_AfterFadeIn(){ cCharactere.Animate(2, 3, eRepeat, eNoBlock); //animation du charactere cCharactere.Walk(830, 56, eNoBlock, eAnywhere); //marche n'importe ou } function room_RepExec(){ //la boucle en continue avec des AddWaypoint if (!cCharactere.Moving) { cCharactere.Animate(1, 3, eRepeat, eNoBlock); cCharactere.AddWaypoint(830, 420); cCharactere.AddWaypoint(-30, 420); cCharactere.AddWaypoint(-30, 40); cCharactere.AddWaypoint(830, 42); } } _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
Contenu sponsorisé
| Sujet: Re: module pour une animation des pnjs (personnages non joueurs) | |
| |
|
| |
| module pour une animation des pnjs (personnages non joueurs) | |
|