Player Figur springt nach Animation auf Ausgangsposition zurück

  • Hallo zusammen,


    ich arbeite zur Zeit mit Animationen (download über mixamo), die für meinen Fall ausreichend sind. Die funktionieren auch gut (Tür aufmachen oder am Griff rütteln, wenn verschlossen) durch die Eingabe von "E".

    Wo ich Schwierigkeiten habe, sind die Animationen, bei der sich die Position der Spielerfigur (Third Person) ändert, also beim Klettern oder hinlegen usw. Wenn die Amination abgespielt wird, springt die Figur immer wieder auf die Ausgangsposition zurück, obwohl diese doch gerade irgendwo hochgeklettert ist und eigentlich oben bleiben sollte. Die Animation selbst hört auch bei "oben" auf.

    Das kurze Video hier zeigt mein Problem.

    nwiab.de/NwiabGame/Klettern.mp4


    Ich dachte mir, okay, holst halt die aktuelle Position der Figur (Mesh) nach der Amination und setze die Location neu. Das funktioniert leider nicht. Habt ihr da eine Idee? Hier der Bluerprint dazu (als Test noch mit der Eingabe "P")


    Gruß


    Andy

  • Was für Animationen benutzt du? Ich nehme mal an, dass du dir irgendwo fertige Animationen heruntergeladen hast. Es gibt da zwei Arten von Animationen. Einmal gibt es Animationen, welche auch während der Animation die Position wechseln, also nach vorne sprinten, zur Seite springen, oder was auch immer. Und es gibt Animationen, die das ganze auf der Stelle machen. Dann musst du für die Bewegung halt selber sorgen. Letzteres benötigst du.

    Die Animationen, welche schon bei der Animationen nach vorne springen usw., die benötigst du nur zum Beispiel für Atacken oder so, also zum Beispiel ein Wolf springt den Spieler an.

  • wie oben beschrieben, sind es fertige Animationen von Mixamo, mit einem Konverter für UE Manny. Die Kletteranimation ist ja eine, bei der die Figur die Position wechselt. Schließlich klettert sie ja nach oben.


    Was ich noch rausgefunden habe: ich schalte im Blueprint am Ende diesen Node:


    trenne ich die Verbindung, bleibt die Figur zwar oben, aber sie lässt sich nicht mehr bewegen, bzw mit WSAD gleitet sie nur noch hin und her, in der (letzten) knieenden Position. Ich brauche aber die Aktivierung der normalen Laufen-Gehen-Animation wieder, deswegen dieser Node.


    Kann mit der Info jemand was anfangen. Ich bin für jeden Tipp dankbar.

  • Hallo,

    ach so.

    Ich mache das mit mehreren Animationen als zum Klettern dann klettern und dann ankommen, im AMB im AnimGraph also drückst du E aktivierst du deine Variable. Also wie beim springen mit is in air.


    Play Animation oder Play Anim Montage, wir ja nur deine Ganze Animation innerhalb der Capsule abgespielt, es sieht zwar aus als ob dein Character klettern aber die Capsule bleibt unten Stehen das kannst du gut erkennen wenn du die Capsule den Hacken bei Hidden in Game mal raus nimmst.

    Was bedeutet das Get actor location immer die Capsule ist. Also set Actor Location ist immer der Anfang. Du müsstest also wissen wie hoch der der Caracter klettert. z.B Start ist der Boden 20 die Obere Ebene des Cubs wäre 25 dann müsstest du get actor (Mesh) location + 5 nehmen und dann set Actor Location.

    Das ist aber alles sehr umständlich außerdem glaube ich bekommst du Probleme wenn du eine einzige Animation nimmst wenn dein Cube mal höher ist als deine Animation lang ist.


    Aber die anderen werden mich da gerne Korrigieren und dir bestimmt die Passende Lösung für dein Problem geben.

    Das war nur meine mehr als bescheidenes Wissen.

    Gruß

  • Da stimme ich leviavan zu, sehe ich genau so. Ich müsste mir das mal Live anschauen. Kann dir nur anbieten, in Discord darüber zu reden, in Schriftform zieht sich das zu lange hin. Ich denke, dass du es anders angehen musst, die Kletter Animation (es müsste ja auch noch eine Anim fürs Aufstehen folgen) auch über States, oder zumindest mit einer Montage. Wie Tomarr schon erwähnte gibt es Animationen mit Root Motion, und in Place Anim. Die Position deines Charcter Meshs am Ende der Animation kann oben sein, aber die Capsul ist immer noch auf dem Boden.

  • Hallo zusammen,


    vielen Dank für eure Tipps. Das Problem war wirklich die Capsul, die am Boden blieb, egal was die Figur machte. Ich habe das nun so gelöst:


    nwiab.de/NwiabGame/kletternFertig.mp4


    ich weiß, es ist nicht perfekt und auch nur für diese Aktion geeignet, aber das reicht mir erstmal. Mit Discord kenne ich mich leider gar nicht aus, aber das sollte ich vielleicht mal machen.

    Danke nochmal und bis zum nächsten Problem


    Gruß

    Andy

    • Offizieller Beitrag

    Die Frage ist: Was erwartest du, was passiert, wenn das Hochklettern kürzer ist als die dazugehörige Animation?


    Versuche doch mal, die Animation schneller abzuspielen oder das Hochklettern langsamer zu gestalten.


    Eine weitere Möglichkeit wäre ein Blend-Out, also eine Interpolation von der Kletteranimation zur Idle-Animation. Diese Lösung ist jedoch nicht perfekt.

    Vielleicht wäre es besser, für kleinere Hindernisse eine andere (kürzere) Kletteranimation zu verwenden?

  • Wie gesagt, es ist nicht perfekt und meine Ansprüche sind jetzt auch nicht soooo hoch. Ich mache das nur zum Spaß, niemand wird jemals dieses Spiel spielen.

    es ist mein zweites Spiel, beim ersten habe ich noch ganz andere Fehler gemacht. Aber nur so lernt man, denke ich.

    Für kleiner Hindernisse reicht ein Sprung völlig aus


    Trotzdem danke für die Tipps.

  • Wie gesagt, es ist nicht perfekt und meine Ansprüche sind jetzt auch nicht soooo hoch. Ich mache das nur zum Spaß, niemand wird jemals dieses Spiel spielen.

    es ist mein zweites Spiel, beim ersten habe ich noch ganz andere Fehler gemacht. Aber nur so lernt man, denke ich.

    Für kleiner Hindernisse reicht ein Sprung völlig aus


    Trotzdem danke für die Tipps.

    Mag ja richtig sein, nur, was bringt es dir etwas dazuzulernen und am Ende ist es noch immer nicht richtig? Ich meine, richtig und falsch ist immer so eine Sache beim Programmieren und erst recht bei der Spieleprogrammierung, wo nun wirklich sehr viel getrickst wird. Aber, wenn etwas merklich weniger falsch ist als vorher und dennoch merklich nicht richtig, dann stehst du beim nächsten Mal ja wieder vor dem Problem.

  • Mag ja richtig sein, nur, was bringt es dir etwas dazuzulernen und am Ende ist es noch immer nicht richtig? Ich meine, richtig und falsch ist immer so eine Sache beim Programmieren und erst recht bei der Spieleprogrammierung, wo nun wirklich sehr viel getrickst wird. Aber, wenn etwas merklich weniger falsch ist als vorher und dennoch merklich nicht richtig, dann stehst du beim nächsten Mal ja wieder vor dem Problem.

    das stimmt natürlich, aber ich möchte mich im dem Fall nicht so lange mit diesem Problem aufhalten. Es funktioniert erstmal und das reicht mir fürs Erste.