Animation bis zu Ende und dann Dialog

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Animation bis zu Ende und dann Dialog

Beitrag von DieFüchsin »

Ich habe in einem Raum einen Charakter, der ständig animiert wird. Beim ansprechen soll die Animation zu Ende geführt werden und dann der Dialog gestartet werden.

Wie kann ich das realisieren?

Die Füchsin
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ganz wichtig bei solchen Fragen: AGS 2.62 oder 2.7?
Use gopher repellent on funny little man
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

die Animation, dass er aufhört (du meinst das doch jetzt, wie z.B. den Messerwerfer in Algerien in Indy4) Soll einfach einen freien Loop belegen.

Code: Alles auswählen

DisplaySpeech(INDY, "Entschuldigung");
AnimateCharacterEx(WERFER,freierloop,5,0,0,1);
FaceCharacter(WERFER, INDY);
DisplaySpeech(WERFER, "Ja?");
RunDialog(0);
Dieses Script ist sowohl AGS 2.62 als auch 2.7 kompatibel
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

hmm du meinst also, ich soll zwei Animationen machen, eine der Bewegung und eine des Aufhörens?

So einfach ist das leider nicht, ich versuch es mal kurz zu beschreiben:

Der Character ist ein Fisch, der immerzu aus dem Wasser springt, einen Bogen in der Luft macht und dann wieder ins Wasser taucht.

Sprechen kann er erst, wenn er wieder im Wasser angekommen ist und dort den Kopf heraus streckt.

Wird er wärend des Sprungs (der laufenden Animation) angesprochen, muss er erst das Ende der Animation erreichen, also wieder im Wasser landen, bevor es weitergehen kann.

Sonst verschwindet er mitten in der Luft und ist plötzlich im Wasser.

Ein zusätzllicher Loop nützt nach meiner Ansicht da nichts. Oder hab ich was falsch verstanden?

Zur Version: Ich schau mal, hab sie nicht im Kopf und das Programm ist weit entfernt auf einem anderen Rechner

Die Füchsin
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

Code: Alles auswählen

DisplaySpeech(EGO, "Hi, Fischi");
while (Character[FISCHI].frame != "Endframe der Bewegung"){
wait(1));}
AnimateCharacterEx(FISCHI,"Kopf-rausstreckt-Loop",5,0,0,1);
FaceCharacter(FISCHI, EGO);
DisplaySpeech(FISCHI, "Wat is?");
RunDialog(0);
bin aber nicht sicher ob es funzt...
Zuletzt geändert von Smiley am 01.06.2005, 20:53, insgesamt 2-mal geändert.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Die while-Schleife ist das entscheidende, sehr gut.
Da ist auch die AGS-Version mehr oder weniger egal.
Hab mal wieder zu kompliziert gedacht :)
Use gopher repellent on funny little man
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

DieFüchsin hat geschrieben:hmm du meinst also, ich soll zwei Animationen machen, eine der Bewegung und eine des Aufhörens?

So einfach ist das leider nicht, ich versuch es mal kurz zu beschreiben:

Der Character ist ein Fisch, der immerzu aus dem Wasser springt, einen Bogen in der Luft macht und dann wieder ins Wasser taucht.

Sprechen kann er erst, wenn er wieder im Wasser angekommen ist und dort den Kopf heraus streckt.

Wird er wärend des Sprungs (der laufenden Animation) angesprochen, muss er erst das Ende der Animation erreichen, also wieder im Wasser landen, bevor es weitergehen kann.

Sonst verschwindet er mitten in der Luft und ist plötzlich im Wasser.

Ein zusätzllicher Loop nützt nach meiner Ansicht da nichts. Oder hab ich was falsch verstanden?

Zur Version: Ich schau mal, hab sie nicht im Kopf und das Programm ist weit entfernt auf einem anderen Rechner

Die Füchsin
Tja, kannste vielleicht auch direkt so beschreiben!
DA wäre ich auch auf die while-Schleife gekommen ;)

Nix für ungut, deine Frage ist ja jetzt beantwortet
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

Danke, danke. Ich werds so mal probieren. Das nächste mal werd ich gleich weiter ausholen, um Missverständnisse zu vermeiden, ZENSIERT. :wink:
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

alles klar, hat super funktioniert, danke.

für Objekte gibt es keine entsprechende Funktion oder Variable, oder? Hab das Handbuch vergeblich durchsucht.

Grüße, die Füchsin
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Lektion 1: Wir ersetzen in solchen Situationen den Wortbestandteil "character" durch "object" :D

und: character[FISCHI].frame muss durch irgendwas ersetzt werden. Wer hat TFMR?
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

[ZENSIERT] hat geschrieben: und: character[FISCHI].frame muss durch irgendwas ersetzt werden. Wer hat TFMR?
GetObjectGraphic (int object)

wobei das Ergebnis nicht die Framenummer sondern die Slotnummer der aktuellen Grafik ist.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

@die Füchsin, [ZENSIERT]: Leider nicht.

Da Objekte nicht zwangsläufig eine View zugeordnet haben (ein Sprite reicht ja anfangs aus), wäre object.frame nicht immer definiert. Man könnte natürlich -1 zurückliefern, wenn das Objekt gerade nicht animiert wird, aber CJ hat's bis jetzt nicht eingebaut.

workaround: einen hotspot nehmen und einen non-clickable Charakter dahinter setzen.

EDIT: Smileys Vorschlag könnte funktionieren, in 2.7 wäre das

Code: Alles auswählen

while(oFischi.Graphic!=x)
Ich weiss aber nicht, ob das funktioniert, sprich, ob oFischi.Graphic sich während der Animation ändert. Bin auch grade zu faul, es auszuprobieren :)
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

nun ja, die paar Objecte, mit denen ich das vorhabe, können auch als Charactere erstellt werden.
Antworten