Jump to content
Unity Insider Forum

2d Animation im Animatot läuft nicht richtig unity 4.3 free


stevensen

Recommended Posts

hallo,

 

hab seid langem wieder mal Unity3D in der Mache und hab ein problem mit den 2D Funktionen.

Meine Figur läuft hin und her und hält an durch die cursor gesteuert.Das geht alles. Wenn ich jetzt z.B. Space drücke soll eine Wurfanimation abspielen und z.b einen Stein werfen. Bei mir läuft die Animation entweder immer oder abgehackt etc. Ich dachte das geht so:

if (Input.GetKeyDown ("space")&& !wirft)
  {
  wirft = true;
anim.SetBool ("Wurf",true);

   }
if (Input.GetKeyUp ("space") && wirft)
 {
  anim.SetBool("Wurf",false);
 }

 

Macht es aber nicht. Ich will verhindern dass ich die Animation neu starten kann, bevor sie erstmal abgelaufen ist.

Also gibts ne Funktion wie if (anim.isplaying) { ... kein neuer wurf }?

 

Ich hoffe ihr versteht micht

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mecanim braucht man nicht durch Code zu bändigen. anim.SetBool reicht bei einem gut umgesetzten AnimatorController völlig aus - dass die Animation nicht mehrere Male gestartet wird, macht die State Machine dann schon alleine.

Ich bin noch nicht so firm, gibts für das von mir beschriebene Problem vielleicht schon ein Tutorial. Ich komme noch nicht klar mit den Funktionen solo und atomic etc. Die Tuts die ich bisher fand behandelten immer loopbare Animationen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn Du nur eine Animation im Animator hast, dann ist das deine Default Animation. Das erkennst Du an der orangen Kästchenfarbe von der Animation, diese wird immer ausgeführt wenn der Animator im "Startplayback" ist.

Eine Lösung wäre:

Erzeuge eine Idle-Anim oder eine die nix tut. Ziehe Sie ins Animatorfenster. Rechte Maustaste darauf->"Set as Default". Links in dem Animatorfenster auf Parameter "+" klicken und einen bool anlegen, mit "Wurf".

Dann eine Transition von der Idle zur Wurf-Anim. Auf die Transition klicken und im Inspektor die Transition, bei Conditions auf "Wurf" stellen und true. Dann sollte der Code:

if (Input.GetKeyUp ("space"))
 {
  anim.SetBool("Wurf",true);
 }

 

funktionieren.

 

EDIT:

Was auch noch gehen würde nur mit der Default, also den Wurf, ist:

Den Animator auf Startplayback, oder Stopplayback zu setzen. Das hab ich aber noch nicht erprobt. Zumal wenn man noch mehrere Anim hinzufügt ist das bestimmt keine gute Lösung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Anregungen und Tipps!

Ich habe verschiedenes probiert klappte irgendwie nicht. Ich hab's jetzt einigermaßen hingekriegt aber es hakelt noch, ich denke ich muß da noch "tunen". Momentan mußte ich doch per Script eingreifen, für Tipps es nur mit macanim hinzukriegen wäre ich dankbar.

Mit Hilfe eines Timers stelle ich nach ein paar Millisequnden wieder anim.SetBool("Wurf",false); Allerdings spawn der Stein einwenig assynchron.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aso,

dachte Du meinst die Wurfanimation der Figur und nicht den "Stein" selber.

Dann musst Du es so machen das wenn du auf "Wurf" drückst der Stein an einer Stelle Instanziiert wird und in entsprechender Richtung fliegt,

Dazu kann ich Dir das Tut empfehlen. Der Teil wo die Raketen erzeugt werden. So ca bei 12.30

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aso,

dachte Du meinst die Wurfanimation der Figur und nicht den "Stein" selber.

Dann musst Du es so machen das wenn du auf "Wurf" drückst der Stein an einer Stelle Instanziiert wird und in entsprechender Richtung fliegt,

Dazu kann ich Dir das Tut empfehlen. Der Teil wo die Raketen erzeugt werden. So ca bei 12.30

@ Bemmi83

Du hattest mich schon richtig verstanden, ich meinte die Wurfanimation. Ich meinte nur wenn ich z.B. Space drücke spawn der Stein, und die Wurf-Animation kommt ein klein wenig zu spät. Ich denke das ist ein timing-Problem. Ich muß wohl noch ein paar Tutorials anschauen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...