Unity - Abfragen in welcher Achse sich ein Object bewegt?
Hallo,
ich habe ein Frage zu Unity um zwar habe ich ein 2D Objekt, welches sich beim pathfinding in der x und y Koordinate bewegt. Je nach in welche Richtung es sich bewegt soll eine andere Animation stattfinden. Also für die Bewegungen nach Rechts, links, oben und unten soll immer eine andere Animation stattfinden. Aber kann das Objekt sich auch schräg bewegen, weshalb auch noch irgendwie abgefragt werden müsste, ob der Winkel sich zum Beipsiel eher der y-Achse nähert oder der x-Achse. So stelle ich mir zumindest vor, wie ungefähr es gemacht werden müsste. Über simplere Möglichkeiten wäre ich natürlich auch sehr erfreut.
Kann mir da jemand helfen...?
1 Antwort
Hi!
Was Du hier suchst sind sogenannte Blend Trees: https://docs.unity3d.com/Manual/class-BlendTree.html
Bei Deiner 2D-Variante spezieller ein Blend Tree mit 2D Blending: https://docs.unity3d.com/Manual/BlendTree-2DBlending.html Und so wie Du es beschreibst nochmal genauer: 2D Simple Directional.
Das bedeutet, dass Du die Animationen nach links/rechts/oben/unten (und auch Idle falls Du das brauchst) bestimmst und dem Animator dann mitteilst, wie Dein Character sich gerade bewegt (sprich die x/y Verschiebung). Aus den Daten ermittelt der Animator dann die geeignete Animation und zeigt diese an.
Alles dazu findest Du bei den hinterlegten Links. :)
Schau mal hier, gibt eine sehr ausführliche Beschreibung von Unity zu diesem Thema: https://docs.unity3d.com/Manual/nav-CouplingAnimationAndNavigation.html
Ich danke dir! Das hat mir sehr weitergeholfen!
Hi, ich habe mich jetzt ein wenig mit Blend trees beschäftigt. Das was in den Tutorials, die ich darüber gesehen habe, kriege ich auch hin, leider löst das nicht wirklich das Problem, dass ich habe. Leider wird in allen Tutorials, die ich gefunden habe nur erklärt, wie das navigieren in den Achsen eines Blend trees funktioniert über Key.Input in einem Script. Also dieser rote Punkt im Blend tree wird nach oben bewegt, wenn zum Beispiel die Taste W gedrückt wird. Nun aber wird mein Object nicht gesteuert. Es läuft automatisch über pathfinding in alle Richtung. Wie schaffe ich nun, dass herausgefunden wird in welche Richtung mein Object sich bewegt, sodass ich die Informationen in einem Script nutzen kann ohne das ein key.Input einem Blend tree, die Information dazu geben kann, da es ja kein key.Input gibt...?