Sprechanimation bei Sprachausgabe

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
pikubik
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 76
Registriert: 09.04.2006, 17:51
Kontaktdaten:

Sprechanimation bei Sprachausgabe

Beitrag von pikubik »

so, ich hab folgendes Problem:
Ich will, dass mein Charakter während er spricht einfach ständig die Sprechanimation durchläuft bis er aufhört zu sprechen...
Das wäre kein Problem, wenn ich Sprachausgabe + Text anzeigen lassen würde, aber ich will NUR die Sprachausgabe und dann animiert er nicht mehr...

hab versucht das dann folgendermaßen zu lösen
(im global script; repeatedly_execute_always):

if ((cHack.Speaking) && (!cHack.Animating)) {
cHack.ChangeView(2);
cHack.Animate(cHack.Loop, 5, eRepeat, eNoBlock); }

aber es funktioniert absolut NICHTS, denke mal das es daran liegt, das der char nicht im eigentlichen sinne "spricht"...
was kann man da machen?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Auf die Schnelle:
Benutz nicht die AGS-Option für "nur Sprache" sondern setz' die Textfarbe auf 0 (transparent).
Use gopher repellent on funny little man
pikubik
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 76
Registriert: 09.04.2006, 17:51
Kontaktdaten:

Beitrag von pikubik »

funzt net,textfarbe 0 ist schwarz, habs auch mit -1 probiert, da is es dann blau,außerdem würde ja, selbst wenn die schrift transparent wäre, die outline immer noch schwarz bleiben
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Wenn Du Farbe 63519 (255,0,255) verwendest, ist es durchsichtig.
Die Outline kriegt man mit Game.SpeechFont=0; weg.

Leider kann man die SpeechFont nur global ändern, nicht nur für einen Charakter.
Ich finde es aber sowieso seltsam, dass die Sprechanimation bei "nur Sprache" nicht mehr abgespielt wird.
Werd mir das bei Gelegenheit mal anschauen.

EDIT: So, habs getestet.
Am Anfang des Scripts SetVoiceMode(eSpeechVoiceOnly); und beide Charaktere machen herrlich Mundbewegungen.

Du benutzt nicht zufällig SayBackground?
Use gopher repellent on funny little man
pikubik
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 76
Registriert: 09.04.2006, 17:51
Kontaktdaten:

Beitrag von pikubik »

KhrisMUC hat geschrieben: EDIT: So, habs getestet.
Am Anfang des Scripts SetVoiceMode(eSpeechVoiceOnly); und beide Charaktere machen herrlich Mundbewegungen.

Du benutzt nicht zufällig SayBackground?
Nein, ich benutze ganz normal "Say"
also zB:

Code: Alles auswählen

cHack.Say("&1 bla");
ob das ganze in einem dialog funktioniert hab ich noch nicht getestet...


hab jetzt einfach mal die schrift "unsichtbar" gemacht, so funzt es jedenfalls.
Keine Ahnung warum es nicht geht wenn ich einfach SetVoiceMode(eSpeechVoiceOnly); benutze...
naja,is zwar ein bisschen umständlicher (weil ich es eigentlich so machen will, dass man es während dem Spiel einstellen kann wie man will), aber immerhin gehts...

ich benutze AGS 2.72
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ich hab es auch mit Say getestet, nicht im Dialog.

Es scheint ein kleiner Bug in AGS zu sein, ich konnte es nämlich reproduzieren:
Wenn "Lip sync" aktiviert ist, werden die Figuren nicht animiert, sobald VoiceOnly aktiv ist.

Wenn "Lip sync" ausgeschaltet ist, lässt AGS einfach die Animation in einer Schleife durchlaufen, d.h. die Einstellung Sprache/Text ist egal.
Ist aber "Lip sync" aktiviert, erfolgt die Animation auf Basis des Textes; da AGS bei VoiceOnly den zu sprechenden Text wohl einfach auf "" setzt, nimmt die Routine immer das "Default frame for unlisted characters", also 0. Folglich wird der Charakter nicht animiert.

Entweder schaltest Du also "Lip sync" von vornherein aus, oder Du benutzt:

Code: Alles auswählen

  SetVoiceMode(eSpeechVoiceOnly);
  SetGameOption (OPT_LIPSYNCTEXT, 0);
(Und schaltest es wieder ein, wenn der Text angezeigt werden soll.)

Edit: So:

Code: Alles auswählen

function SetVM(VoiceMode vm) {
  if (vm==eSpeechVoiceOnly) SetGameOption (OPT_LIPSYNCTEXT, 0);
  else SetGameOption (OPT_LIPSYNCTEXT, 1);
  SetVoiceMode(vm);
}
Use gopher repellent on funny little man
pikubik
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 76
Registriert: 09.04.2006, 17:51
Kontaktdaten:

Beitrag von pikubik »

so geht es jedenfalls jetzt...

vielen dank khrismuc, du kannst einem echt immer helfen!
Antworten