SyntaxTalkstoMe Geschrieben 8. Dezember 2018 Melden Share Geschrieben 8. Dezember 2018 Hi, ich hab das ursprüngliche Gestackse von mir einfach gelöscht. Wie bewerkstellige ich am besten 2 Animationen gleichzeitig abzuspielen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 8. Dezember 2018 Melden Share Geschrieben 8. Dezember 2018 Ich nehme an, es geht um sowas wie Oberkörper und Unterkörper? Ich kann da keine genaue Anleitung geben, aber wonach du suchst sind "Animation Layers". Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 8. Dezember 2018 Autor Melden Share Geschrieben 8. Dezember 2018 Ich will ne Animation abspielen, während der Charakter !Grounded ist. Die Animation betrifft aber nicht direkt den Charakter selbst, sondern soll nur "am" Character mitfliegen. Das hört sich zwar an sich einfach an, klappt aber nicht so wie gewünscht. Das mit den Layers habe ich schon probiert. Hab damit noch nicht solche Erfahrungen. Allerdings das Ergebnis war, dass die neue Animation die Charakteranimation verdrängt. Bzw sie hatten sich abgewechselt und sind nicht gleichzeitig gelaufen. Bei dem zusätzlichen Layer hatte ich Additive ausgewählt und Weight auf 1 gestellt. Im großen und ganzen, habe ich mich nach dem Tutorial gerichtet. http://gamedevelopertips.com/unity-run-2-animations/ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 8. Dezember 2018 Melden Share Geschrieben 8. Dezember 2018 vor 5 Minuten schrieb SyntaxTalkstoMe: Die Animation betrifft aber nicht direkt den Charakter selbst, sondern soll nur "am" Character mitfliegen. Das klingt, als wolltest du einfach zwei Animatoren benutzen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 8. Dezember 2018 Autor Melden Share Geschrieben 8. Dezember 2018 jup Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 8. Dezember 2018 Melden Share Geschrieben 8. Dezember 2018 Dann verstehe ich deine Fragestellung nicht. Dein script referenziert einfach zwei Animatoren und ruft dann in jeweiligen Moment die passenden Methoden auf. characterAnimator.SetTrigger("Jump"); friendAnimator.SetTrigger("Jump"); ...oder so. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 8. Dezember 2018 Autor Melden Share Geschrieben 8. Dezember 2018 Ja, das hatte ich auch. Aber das hatte seltsame Nebeneffekte. Aber das lag vermutlich am Setbool. Ich guck nochmal Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 8. Dezember 2018 Autor Melden Share Geschrieben 8. Dezember 2018 Ich hatte das Anfangs auch so wie du gepostet hast. Allerdings wird diese Animation dann nicht abgespielt. Außerdem werden dabei, obwohl es auf zwei Animatoren referenziert ist, wird immer nur eine Animation abgespielt. Muss mir das nochmal genauer angucken. Bestimmt irgendwo ein Logikfehler. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 8. Dezember 2018 Melden Share Geschrieben 8. Dezember 2018 Ja... da muss ein Fehler im Script sein. Die Animatoren wissen nichts voneinander oder so. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 8. Dezember 2018 Autor Melden Share Geschrieben 8. Dezember 2018 Herr, hilf mir .... Ich hab irgendwie gerade einen ganz fiesen Hirnknoten. Es will einfach nicht klappen. Entweder er spielt die Animation überhaupt nicht ab, oder sie wechselt sich mit der Character Animation ab. Warum kann es nicht genauso einfach funktionieren wie Particle ein und auszuschalten. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 8. Dezember 2018 Melden Share Geschrieben 8. Dezember 2018 Tut es, aber in deinem Code oder in deiner Szene ist wohl ein Fehler. Poste vielleicht etwas Code. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 8. Dezember 2018 Autor Melden Share Geschrieben 8. Dezember 2018 Hi, ich hab soviel wie: private Animator cloudAnim; cloudAnim = GetComponent<Animator>(); if(!Grounded && cloudAnim != null) { if(!cloudAnim.isPlaying) { cloudAnim.Play(); } } ich bin verschiedene Wege gegangen. U.a. mit: cloudAnim.SetTrigger(animation) cloudAnim.Play("animation"); Über SetTrigger funktioniert es eher. Allerdings verdrängt die Animation dann immer die Animation des Characters. Was es nicht soll. Evtl brauch ich doch Layer. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Dezember 2018 Melden Share Geschrieben 9. Dezember 2018 Ich sehe da jetzt keine zwei Animatoren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 9. Dezember 2018 Autor Melden Share Geschrieben 9. Dezember 2018 der eine heißt: private Animator anim; private Animator cloudAnim; anim = GetComponent<Animator>(); cloudAnim = GetComponent<Animator>(); anim ist sozusagen für die Characteranimationen da und cloudAnim eben für diese eine spezielle Animation. Die Componente Animator wird zwei mal referenziert. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Dezember 2018 Melden Share Geschrieben 9. Dezember 2018 Aha, da haben wir ja den Fehler. Du referenzierst dieselbe Komponente zweimal. Du musst aber zwei verschiedene Komponenten haben und dann jede einmal referenzieren. Mit den Referenzen musst du dir das so vorstellen: Ein Mann ist Ehemann und Vater. Das Kind referenziert ihn als "Vater" und die Ehefrau ihn als "Ehemann". Das Kind kommt an und will, dass Papa es hochwirft und die Frau kommt an und will, dass er mit ihr Steuererklärungen macht. Obwohl hier von "Vater" (anim) und "Ehemann" (cloudAnim) die Rede ist, geht es um dieselbe Person (dieselbe Komponente) und die kann halt nicht beides gleichzeitig machen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 9. Dezember 2018 Autor Melden Share Geschrieben 9. Dezember 2018 Achso. Dachte die ganze Zeit, man braucht jede Komponente nur einmal. Mir war das schon bewusst irgendwo. Hatte mich aber drauf verlassen das es geht. Ich hab es die ganze Zeit auf biegen und brechen so versucht. Deshalb flackerte auch die Animation und hat sich gegenseitg verdrängt. Aber jetzt noch ne dumme Frage vermutlich: Wie kann ich im Code festlegen, welchen der beiden Animatoren ich ansteuern will? Geht das überhaupt? Oder muss ich ein neues GameObject als Child dem Charakter hinzufügen und dann einfach cloudAnim = GameObject.Find("cloud").GetComponent<Animator>(); da es nur ein GameObject gegeben wird mit "cloud" geht das ja. Oder: cloudAnim = gameObject.GetComponentinChildren<Animator>(); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 9. Dezember 2018 Autor Melden Share Geschrieben 9. Dezember 2018 Ok ich hab mir die Frage selbst beantwortet. Zu dem Problem. Ich war wohl geistig umnachtet. Manchmal denk ich einfach zu kompliziert. Es geht jetzt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Dezember 2018 Melden Share Geschrieben 9. Dezember 2018 Um aber nochmal eine kleine Optimierung vorzuschlagen: GameObject.Find und generell alles mit Strings sind Sachen, von denen ich abraten würde. GetComponentInChildren dagegen ist etwas unsicher, da es alles mögliche finden kann, je nachdem, wie sich die Hierarchie deines Objekts auf Dauer ändert. In der Regel die beste Variante ist [SerializeField] private Animator cloudAnim; [SerializeField] macht dasselbe wie public in der Hinsicht, dass du im Editor das Richtige Objekt einfach reinziehen kannst. Dann gibt's keine Verwechslungsgefahr mehr. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 9. Dezember 2018 Autor Melden Share Geschrieben 9. Dezember 2018 Ah spitze. Das wollte ich die Tage sowiso mal gucken was dieses [SerializedField] macht. Da hab ich gesehen, da gibt es ja noch mehr so Sachen in eckigen Klammern. Das größte Problem bei mir ist, ich schnupper mal hier mal dort rein. Es gibt für mich noch soviel zu lernen. Meine Arbeitsweise ist evlt auch nicht die strukturierteste. Das führt manchmal zu Chaos. Aber ich arbeite dran. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 9. Dezember 2018 Autor Melden Share Geschrieben 9. Dezember 2018 DIe Euphorie hat ein jehes Ende gefunden. Es war ein versehen. Er spielt die Animation nach wie vor nicht ab. Kann es sein, dass eine Coroutine die im Hintergrund läuft, nicht den Trigger auslösen kann? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Dezember 2018 Melden Share Geschrieben 9. Dezember 2018 Eine Coroutine läuft nicht im Hintergrund Aber noch viel wichtiger: Du kannst in einer Coroutine alles machen, was du auch ohne machen kannst. Zeig doch mal die aktuelle Version deines Codes. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 9. Dezember 2018 Autor Melden Share Geschrieben 9. Dezember 2018 if (permaRun && !Grounded()) { CharakterMove(); anim.SetBool("run", false); if (cloudAnim != null) { cloudAnim.SetTrigger("cloudMage"); } Zum zurücksetzen hab ich animator.ResetTrigger gemacht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Dezember 2018 Melden Share Geschrieben 9. Dezember 2018 Das würd ich lassen. Der Witz am Trigger ist, dass er von alleine sofort wieder ausgeht. ResetTrigger ist mit ziemlicher Sicherheit nur für komische Sonderfälle gedacht. So, jetzt debuggen wir mal. Gibt es beim Ausführen irgendwelche Fehlermeldungen in der Konsole? Setze ein Debug.Log("Hallo"); an die Zeile, in der der Trigger ausgelöst werden soll. Taucht das "Hallo" im richtigen Moment in der Konsole auf? Wenn ja, dann ist der Code nicht das Problem, sondern dein Animator oder dein AnimatorController. Wenn nein, dann ist dein Code nicht in Ordnung und der Trigger wird beim Animator gar nicht erst ausgelöst. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SyntaxTalkstoMe Geschrieben 9. Dezember 2018 Autor Melden Share Geschrieben 9. Dezember 2018 Das hatte ich schon getan mit dem Debug.Log. Er springt auf jedenfall rein. ICh werde morgen mit dem SetTrigger wo anders reinmachen. Ich habe nämlich eine Coroutine die prüft, ob der Character grounded ist oder nicht. Und wenn er nicht grounded ist, soll er den Trigger auslösen. Evtl ist es besser, die Animation zu triggern, wenn eine Toucheingabe registriert wird. Hier trotzdem ein Bild vom Animator Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ricky-W Geschrieben 10. Dezember 2018 Melden Share Geschrieben 10. Dezember 2018 Dumme Frage. Müsste beim Avatar nicht was reingeschoben werden? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.