Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -17%
SSD interne Crucial SSD P3 1To NVME à ...
Voir le deal
49.99 €

 

 SpeechView d'un personnage gesticulant

Aller en bas 
2 participants
AuteurMessage
Jorkz
Cliqueur Emérite
Cliqueur Emérite
Jorkz


Nombre de messages : 666

Age : 40

Localisation : Montpellier

Date d'inscription : 16/07/2006


SpeechView d'un personnage gesticulant Empty
MessageSujet: SpeechView d'un personnage gesticulant   SpeechView d'un personnage gesticulant EmptyMar 24 Jan 2023 - 4:32

Coucou les chenapans !

J'aurais aimé savoir comment on programme la speech view d'un personnage qui serait déjà animé.
Par exemple actuellement j'ai un singe et j'aimerais que, pendant qu'il parle, je puisse animer sa queue, qui bougerait en même temps...
Par ailleurs il serait donc nécessaire d'avoir deux view "séparées", une pour son corps ainsi qu'une pour sa tête avec la bouche qui s'ouvre et se ferme...

Faut il passer par un SpeakingFrame ? Si oui, comment l'utiliser très exactement ?
Je ne comprends pas le manuel à ce sujet confus

En vous remerciant....

_________________
L' est si forte à la course qu'elle en sort de la phrase.  autruche
Revenir en haut Aller en bas
Creamy
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Creamy


Nombre de messages : 1266

Date d'inscription : 15/10/2007


SpeechView d'un personnage gesticulant Empty
MessageSujet: Re: SpeechView d'un personnage gesticulant   SpeechView d'un personnage gesticulant EmptyMer 25 Jan 2023 - 22:36

Il y a déjà la moitié de la réponse dans ton post : tu peux utiliser un personnage pour le corps et un autre pour la tête (ou un objet pour le corps et un perso pour la tête).
Ne pas oublier de coder les interactions quand on clique sur les 2 parties du singe.

Si ton singe a besoin de se déplacer, tu mets une view invisible à l'un des 2 persos et l'autre devient le personnage complet temporairement.

Je crois que la tête de Guybrush était animée séparément de son corps dans Monkey Island 3.
Revenir en haut Aller en bas
http://creamy.unblog.fr/
Jorkz
Cliqueur Emérite
Cliqueur Emérite
Jorkz


Nombre de messages : 666

Age : 40

Localisation : Montpellier

Date d'inscription : 16/07/2006


SpeechView d'un personnage gesticulant Empty
MessageSujet: Re: SpeechView d'un personnage gesticulant   SpeechView d'un personnage gesticulant EmptyJeu 26 Jan 2023 - 6:35

Merci Creamy, je suis en train de plancher dessus à l'instant, je le posterai ici quand ce sera plus stable...
En fait il faut bien créer un perso différent avec l'anim souhaitée et mettre ceci dans le repeatedly_execute:

Code:
cLePersoQuiSuitLautre.FollowCharacter(cPersoSuivi, FOLLOW_EXACTLY, 1);


1 signifiant non pas le délai, mais exceptionnellement dans le cas de ce follow exactly... que le sprite suiveur se met derrière (dans le sens "dessous") le suivi. Sachant que un zéro ferait le contraire.

...Et effectivement, jouer avec la transparence pour afficher ou pas serait bien la solution. clin d'oeil

_________________
L' est si forte à la course qu'elle en sort de la phrase.  autruche
Revenir en haut Aller en bas
Jorkz
Cliqueur Emérite
Cliqueur Emérite
Jorkz


Nombre de messages : 666

Age : 40

Localisation : Montpellier

Date d'inscription : 16/07/2006


SpeechView d'un personnage gesticulant Empty
MessageSujet: Re: SpeechView d'un personnage gesticulant   SpeechView d'un personnage gesticulant EmptyJeu 26 Jan 2023 - 11:33

Jorkz a écrit:
Merci Creamy, je suis en train de plancher dessus à l'instant, je le posterai ici quand ce sera plus stable...

Après réfexion, je vais poster ici pour montrer un peu où ça en est, et au cas où quelqu'un trouve (ou cherche) la solution.

Et donc en fait, ça fonctionne moyen car la queue en transparence zéro ne veut pas bouger pendant que le perso parle (et affiche le texte). Mais au sein même du dialogue sinon, l'anim de la queue se produit bel et bien (pendant le texte de son interlocuteur, par exemple...) donc: je suis proche du but.

Voici ce que j'ai mis dans repeatedly_execute_always()

Code:
if (cSousLieutenant.walking)
 cQueueSinge.Transparency=100;  
 
if ((!cSousLieutenant.Moving)&&(!cSousLieutenant.Animating))
 cQueueSinge.Transparency=0;
 
if (cSousLieutenant.Speaking){
  cQueueSinge.Transparency=0;
  cQueueSinge.LockView(31, eKeepMoving);
  
  if ((cSousLieutenant.loop == 1)&&(cSousLieutenant.SpeakingFrame >=0 && cSousLieutenant.SpeakingFrame <=3))
    cQueueSinge.Animate(1,  5, eRepeat, eNoBlock);
  if ((cSousLieutenant.loop == 2)&&(cSousLieutenant.SpeakingFrame >=0 && cSousLieutenant.SpeakingFrame <=3))
    cQueueSinge.Animate(2,  5, eRepeat, eNoBlock);
}
 
}

J'ai donc spécifié un loop différent car le perso "sous lieutenant" ne parle pas toujours au même endroit...
Par conséquent, trouvée sur le site anglophone, j'ai également ajouté cette fonction...

Code:
function late_repeatedly_execute_always()
{
  cQueueSinge.loop = cSousLieutenant.loop;
}

car il était conseillé de le faire pour régler un problème persistant de loop "suiveuse" qui ne voulait pas s'aligner. Bref

Toujours est-il que je me demande si tout cela n'entre pas en conflit avec la gestion aléatoire du perso "à suivre", mon fameux cSousLieutenant, car
je souhaitais également qu'il se promène dans la pièce dès qu'on l'appelle... Ce qu'il fait d'ailleurs très bien. langue

Ceci est scripté dans le repeatedly, pas always cette-fois:
Code:

cQueueSinge.FollowCharacter(cSousLieutenant, FOLLOW_EXACTLY, 1);

if (!cSousLieutenant.Moving) {
    cQueueSinge.Transparency=100;
    if (NPCState == eNPCMoves) {
        // The move action must have stopped just now. So startup the animate action:
        cSousLieutenant.LockView(26);
        cSousLieutenant.Animate(cSousLieutenant.Loop, 0, eOnce, eNoBlock);
        // Don't unlock the view just now, because the character is still happily animating away at the moment.

        // Remember in our state variable that our character has just begun the animate mode
        NPCState = eNPCAnimates;
    }
}


if ((!cSousLieutenant.Moving) && (!cSousLieutenant.Animating)) {
    cQueueSinge.Transparency=100;
    if (NPCState == eNPCAnimates) {
        // The Animate action must have run out just now.
        // So now's a good time to unlock the view - since the character is no longer animating.
        cSousLieutenant.UnlockView(25);

        // Let's make the character walk
        int x = Random(Room.Width-1);
        int y = Random(Room.Height-1);
 
        cSousLieutenant.Walk(x, y, eNoBlock, eWalkableAreas);
        // and remember in our state variable that the character has entered her walk mode now.
        NPCState = eNPCMoves;
    }
}

=> La view 25 étant celle où il marche et la 26 celle ou il cligne des yeux, se gratte, enleve son kepi... etc, donc des trucs indispensablement trijouli pour que ça paraisse moins cyclique.

Pour faire fonctionner le bousin, en haut de mon global il y a ceci:

Code:
int eNPCMoves = 1;
int eNPCAnimates = 2;

int NPCState;

Et ça fait bien le taf. Et je l'ai glané sur le forum anglophone.

Mais seulement voilà, je tourne un peu en rond sur cette histoire de queue gesticulante, je ne comprends vraiment pas pourquoi elle ne s'anime pas pendant la synchro labiale et l'affichage du texte de cSouslieutenant.

Et enfin, parce que ce message est décidément trop court, j'ajoute en bonus les réglages respectifs de chacun des perso, le perso "suivi" par sa queue !!

SpeechView d'un personnage gesticulant Singe10
SpeechView d'un personnage gesticulant Queue10

Voilà Voilà, désolé pour ma tartine.. Mais pour ceux qui ont apprécié elle sera publiée chez "Lurdingo", editeur qui monte, et je serai en dédicace dès la semaine pro du jeudi 2 au dimanche 5 inclus, pour mon autre ouvrage à suspense au titre mystérieux, le déjà très controversé "lol ptin pk sa marche po"

clin d'oeil clin d'oeil clin d'oeil

_________________
L' est si forte à la course qu'elle en sort de la phrase.  autruche
Revenir en haut Aller en bas
Contenu sponsorisé





SpeechView d'un personnage gesticulant Empty
MessageSujet: Re: SpeechView d'un personnage gesticulant   SpeechView d'un personnage gesticulant Empty

Revenir en haut Aller en bas
 
SpeechView d'un personnage gesticulant
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Fonction pour activer la speechview
» Personnage qui se bloque ?!
» [résolu]Personnage
» Supprimer un Personnage
» Distance du personnage

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: