Animation
Übersicht

smeagle24Betreff: Animation |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe mit MilkShape eine Animation einer Tür erstellt. Nun habe ich das Problem, wenn die Animation abgespielt wird, zeigt er immer nur den ersten und denn letzten Frame. Sprich er zeigt dir Tür nur offen oder nur zu, ohne die Frames dazwischen abzuspielen.
Ich habe schon probiert, "anim_speed" zu verändern, mit dem einzigen Erfolg, das die Animation dann gar nicht mehr abgespielt wird. Wie schaff ich es, das die Bewegung, wie die Tür aufgleitet, zu sehen ist und nicht die Tür entweder nur offen oder zu ist? Hier der Code für meine Animation: Code: [AUSKLAPPEN] Function Animation()
If EntityDistance(main_cam,automatiktuer) > 10 Then anim_speed=1 Animate automatiktuer,3,anim_speed,0,0 EndIf If EntityDistance(main_cam,automatiktuer) < 10 Then SetAnimTime automatiktuer,120 Animate automatiktuer,3,anim_speed,0,0 EndIf End Function |
||
TerrorMachine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Führst du die Funktion Animation() in einer Schleife aus? Warscheinlich schon.
Der Befehl "Animate" darf nicht bei jedem Schleifendurchlauf ausgeführt werden. Das ist bei dir aber der Fall. Darum fängt er immer wieder von vorne an. Prüfe einfach bei deinen Ifs einfach noch ob die Animation noch läuft mit "Animating" |
||
smeagle24 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, die Funktion "Animation" die ich geschrieben habe wird aus der Hauptschleife heraus immer wieder aufgerufen.
Habe meine Funktion Animation() folgendermassen umgeändert, so das jetzt wenn ich weiter als 10 Pixel von der Tür entfernt bin, die animation gestopt wird Code: [AUSKLAPPEN] Function Animation()
If EntityDistance(main_cam,automatiktuer) > 10 anim_speed=1 Animate automatiktuer,3,anim_speed,0,0 Else If EntityDistance(main_cam,automatiktuer) < 10 Animate automatiktuer,0 EndIf If EntityDistance(main_cam,automatiktuer) < 10 Then anim_speed=-1 Animate automatiktuer,3,anim_speed,0,0 Else If EntityDistance(main_cam,automatiktuer) > 10 Animate automatiktuer,0 EndIf End Function Mein Problem ist aber nach wie vor da. Wenn ich weiter als 10 pixel entfernt bin, dann zeigt er Frame1 der Animation(zu), wenn ich näher dran bin zeigt er mir Frame30(offen). |
||
TerrorMachine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Schreibs so:
Code: [AUSKLAPPEN] If EntityDistance(main_cam,automatiktuer) > 10 anim_speed=1 If Animating(automatiktuer)=0 then Animate automatiktuer,3,anim_speed,0,0 EndIf EndIf If EntityDistance(main_cam,automatiktuer) < 10 Then anim_speed=-1 If Animating(automatiktuer)=0 then Animate automatiktuer,3,anim_speed,0,0 EndIf EndIf Damit sollte es gehen. So wird die Auf-Animation abgespielt, wenn die du an die Türe heran kommst und wenn die Animation nicht schon läuft. Bei der Zu-Animation ist es das selbe nur mit einer anderen Distance. |
||
smeagle24 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, nach einem Tag Auszeit hat ich heute denn Geistesblitz wies funktioniert. Ich habe in meine Funktion Animation() einen Zähler mit eingebaut, der verhindert, das die Animation in einer Endlosschleife abgespielt wird, weil die Animation ja aus einer Schleife heraus aufgerufen wird. Hier nun der Code meiner Funktion
Code: [AUSKLAPPEN] Function Animation()
If EntityDistance(main_cam,automatiktuer) < 10 And animation_zaehler = 1 And Animating(automatiktuer) = 0 Then anim_speed=1 Animate automatiktuer,3,anim_speed,0,0 animation_zaehler = animation_zaehler+1 EndIf If EntityDistance(main_cam,automatiktuer) > 10 And animation_zaehler = 2 And Animating(automatiktuer) = 0 Then anim_speed = -1 Animate automatiktuer,3,anim_speed,0,0 animation_zaehler = 1 End If End Function Vielen Dank, für die Denkanstösse, welche mich letztendlich in die richtige Richtung gelenkt haben. |
||
TerrorMachine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Meiner Meinung nach ist der Zähler überflüssig, weil die Animationen genau deffiniert sind.
Wenn du weiter als 10 weg bist und die Tür gerade nicht animiert wird, dann geht sie zu. Wenn du näher als 10 bist und die Tür gerade nicht animiert wird, dann geht sie auf. Sollte also auch ohne Zähler funktionieren, oder? |
||
smeagle24 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sollte man eigentlich meinen, das die Animation immer nur einmal abgespielt wird. Aus irgendeinem Grund, was auch immer, wurde aber die Animation in einer Endlosschleife abgespielt. Dann habe ich einen Zähler miteingebaut, um das zu verhindern. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group