So integrieren Sie eine Sprunganimation in Unity

Heute habe ich meine erste Sprunganimation in Blender fertiggestellt, die ich in Unity integrieren wollte. Ich dachte, ich müsste nur etwas tun wie "Ok, wenn ich den Sprungknopf drücke, die Sprunganimation auslöse und das war's!". Nichtmal annähernd!

Ich habe das getan und das Ergebnis war… nicht ganz das, was ich erwartet hatte.

Ich bin mir ziemlich sicher, dass der zuvor beschriebene Prozess in bestimmten Fällen funktionieren würde, aber leider nicht in meinem.

Ich musste eine längere Methode durchlaufen.

Ein kurzer Blick in einen Sprung

Ein regulärer Sprung kann in drei verschiedene Phasen aufgeteilt werden:

  • Sprungimpuls: Wenn unser Charakter Antrieb nimmt und springt.
  • Fallende Phase: Wenn unser Charakter versucht, in der Luft stabil zu bleiben.
  • Landephase: Wenn sich unser Charakter, der noch in der Luft ist, darauf vorbereitet, den Boden zu erreichen.

Wie funktioniert es in einem Spiel?

Wenn der Spieler die Leertaste drückt (was offensichtlich die Sprungtaste ist), wird die Sprunganimation ausgelöst.

Sobald der Spieler in der Luft ist, beginnt eine weitere Animation: die fallende Phase, die sich bis zum Boden wiederholt.

Dann beginnt die Landeanimation, aber mit einer Subtilität: Wenn diese Animation startet, wenn der Charakter gerade den Boden erreicht hat, ist es zu spät! In dieser Phase wissen wir, dass wir den Boden berühren werden (einfach weil wir es sehen können). So können wir die Entfernung leicht einschätzen und uns auf den Aufprall in der Luft vorbereiten.

Denken wir darüber nach, wie wir uns verhalten, wenn wir springen! Wenn wir sehen, dass wir den Boden berühren werden, bereiten wir uns auf den „Aufprall“ vor. Wir können, weil wir die Vision des Bodens haben und schnell beurteilen können, wann wir vorbereitet sein müssen.

Was in unserem Fall fehlt, ist etwas, um die Entfernung unseres Charakters vom Boden zu bewerten! Ich werde Ihnen eine Methode zur Bewertung dieser Entfernung vom Charakter zum Boden vorstellen, aber beachten Sie, dass es viele andere Möglichkeiten gibt, dies zu tun. Es kann in anderen Spiel-Engine verwendet werden.

Der Trick besteht darin, einen Strahl von unserem Charakter in Richtung seiner Geschwindigkeit zu werfen. Wir können dann die Landeanimation zum richtigen Zeitpunkt auslösen, kurz bevor wir sie erreichen! 🥳

Bereit?

Implementierung mit Unity

In Unity gibt es ein Tool namens Raycast, das uns genau das gibt, was wir wollen.

Wir gehen in zwei Schritten vor:

  • Wir senden einen Raycast in Richtung unserer Geschwindigkeit, um die Entfernung zu bestimmen, bevor wir den Boden berühren.
  • Wenn unsere Geschwindigkeit auf der vertikalen Achse y in Unity negativ ist (was bedeutet, dass wir fallen) und der Boden zu nahe ist, lösen wir die Landeanimation aus.

Es ist perfekt, aber jetzt, wenn wir ins Spiel springen, löst das Skript unsere Animationen zum richtigen Zeitpunkt aus. Bis zur Unendlichkeit und weiter! ️