Jump to content
Unity Insider Forum

Wie pruefen ob die Animation fertig ist


Strooja0108

Recommended Posts

Hi Leute ,

wie schon im Thema geschrieben wuerde ich gerne wissen wie man am besten ueberpruefen kann ob eine Animation fertig ist. In meinem bestimmten Fall soll erst ein Animationsclip abgeschlossen sein,bevor es im Script weiter geht.

Ich habe es erst mit dem Tipp von @Sascha aus diesem Thread probiert (https://forum.unity-community.de/topic/12681-animation-fertig/ ). Allerdings habe ich dann festgestellt das es sich bei mir scheinbar nicht um eine Animation sondern einen Animationsclip handelt(ich weiss nicht was der unterschied ist). Deshalb steht mir  .isPlaying nicht zur Verfuegung. Danach habe ich es mit einem Animation event am Ende der Animation probiert. Ich rufe einfach eine Funktion auf die eine Variable auf 1 setzt.Wenn Sie auf eins ist wird das Script fortgefuehrt. Das klappt jedoch nur manchmal .Kann es sein das manchmal Frames uebersprungen werden und man deshalb das event am besten auf mehrere Frames am Ende einer Animation legt?

So das sind die Techniken die ich bis jetzt ausprobiert habe.Habt ihr da noch andere bessere Ideen um das Problem zu loesen??

Bin fuer jeden Tipp dankbar.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Strooja0108:

Kann es sein das manchmal Frames uebersprungen werden und man deshalb das event am besten auf mehrere Frames am Ende einer Animation legt?

Sollte eigentlich nicht, aber ich kenne nicht alle Eigenarten dieses Systems.

vor einer Stunde schrieb Strooja0108:

Allerdings habe ich dann festgestellt das es sich bei mir scheinbar nicht um eine Animation sondern einen Animationsclip handelt(ich weiss nicht was der unterschied ist).

Hier sind die drei relevantesten Begriffe:

  • Animator: Die Mecanim-Komponente, die State Machines abspielt (Das, wo du die Boxen mit Pfeilen verbindest und so definierst, wann wie welche Animation in welche andere wechselt).
  • Animation Clip: Eine einzelne Animation, mit Daten wie sich welches GameObject bewegt bzw. wie sich welche Werte von welchen Komponenten über Zeit ändern; von einem Anfang bis zu einem Ende.
  • Animation: Die alte Animations-Komponente, die zwar ursprünglich vom Animator ersetzt werden sollte, aber immer noch ihre eigenen Vorteile hat. Sie funktioniert wesentlich simpler als der Animator. Einfach alle AnimationClips, die er abspielen können soll, in die Liste und dann in einem Script diese Animationen starten.

Das Ende einer Animation ist für Unity ein schwieriges Konzept, da in der Regel Animationen nicht einfach stoppen, sondern in eine andere Definition übergehen. Wenn du also Mecanim fragen wollen würdest, wie weit der aktuelle AnimationClip ist, dann wüsste Mecanim erst nicht einmal, welche Animation du meinst: Die gerade auslaufende oder die, zu der wir gerade wechseln? Und dann gibt's da noch Animation Layers, damit du z.B. den Oberkörper eine Granate werfen lassen kannst, während an den Beinen die normale Laufanimation weiterläuft. Meinst du dann die Laufanimation oder die Wurfanimation? Und da viele Animationen in einer Schleife laufen, ist "Ende" sowieso ein schwieriger Begriff.

Wenn du eine ganz simple Geschichte hast - also "Ding ist nicht animiert, Ding macht eine Animation, Ding bleibt wieder stehen" - dann wäre es am einfachsten, die "Animation"-Komponente statt des Animators zu verwenden. Er zählt zwar als "Legacy" ("veraltet"), aber in Wahrheit ist das Ding nicht ohne Grund immer noch verfügbar, obwohl es Mecanim schon seit einigen Jahren gibt. Man kann das durchaus noch benutzen. Wenn du aber ein etwas komplexeres Animationssystem hast, ist Mecanim schon besser, und in dem Fall wird eben die Abfrage schwieriger. Da ist deine Idee mit dem Event im AnimationClip schon sehr gut. Ich würde versuchen, das zum Laufen zu kriegen. Ansonsten kannst du dir AnimatorBehaviours anschauen. Das sind so Boxen in deiner State Machine, die beim Betreten und Verlassen nicht einfach nur einen AnimationClip laufen lassen, sondern Methoden aus einem Script auslösen. Habe ich selber aber quasi gar nicht mit gearbeitet, kann ich also nicht so viel zu sagen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke Sascha auf dich ist mal wieder verlass. Da meine Animationen alle einzeln gezeichnet sind und ich auch nie welche miteinander verbinden,waeren die normalen Animationen vermutlich die Loesung. Aber ich denke auch ich sollte bei der neueren Variante bleiben und werde es versuchen mit den Events zu loesen.Ist aber echt komisch das du von dem Problem noch nie gehoert hast.Ich hatte zum Beispiel eine Animation wo ein Panel kleiner animiert wird und danach erst das Script weitergehen soll.Ich habe das Event auf den letzten Frame erstellt und hatte immer mal wieder Probleme, dass es da haengen geblieben ist.Jetzt habe ich das Event auf die letzten beiden Frames gelegt und es laeuft schon stabiler. Hatte sonst schonmal jemand damit Probleme?

 

Also ich habe jetzt doch noch einen Thread mit Infos gefunden und scheinbar haben mehrere das Problem mit den Events.Also falls jemand hier das selbe Problem hat einfach mal in diesem Thread nachgucken. https://forum.unity.com/threads/animation-event-not-triggering.456138/

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...