Kursinhalt
Kampfspiel in Unity
Kampfspiel in Unity
Spieleranimation Abschließen
Sprunganimation
Für den Sprung werden wir zwei Animationen haben: Da der Spieler springen und dann fallen wird, müssen wir dafür zwei Animationen erstellen. Der Übergang zwischen ihnen basiert auf der "y-Geschwindigkeit" des Spielers; wenn y positiv ist, springt er, und wenn y negativ ist, fällt er. Wir können die y-Geschwindigkeit aus der Rigidbody2D-Komponente erhalten, die am Spieler angebracht ist.
Dieser Code weist den Wert für den Übergangsparameter zwischen dem Sprung und dem Fall zu.
Code-Erklärung
Diese Zeile überprüft, ob die Leertaste gedrückt wird (Input.GetKeyDown(KeyCode.Space)
), der Spieler am Boden ist (isGrounded
) und der Spieler nicht gerade angreift (animator.GetBool("isAttacking") == false
). Wenn alle Bedingungen erfüllt sind, wird der folgende Codeblock ausgeführt.
Diese Zeile fügt der Rigidbody-Komponente (rb
), die dem Spieler zugeordnet ist, eine Aufwärtskraft hinzu, um einen Sprung zu simulieren. Die angewandte Kraft ist in der Aufwärtsrichtung (Vector2.up
) mit der durch jumpForce
definierten Größe und wird impulsiv angewendet (ForceMode2D.Impulse
).
Diese Zeile setzt einen booleschen Parameter "isJumping" im Animator-Komponente auf true, wodurch die Sprunganimation ausgelöst wird.
Diese Zeile überprüft, ob der Spieler derzeit springt (animator.GetBool("isJumping") == true
), die vertikale Geschwindigkeit des Spielers negativ ist (rb.velocity.y < 0
) und der Spieler auf dem Boden ist (isGrounded
). Wenn alle Bedingungen erfüllt sind, wird der folgende Codeblock ausgeführt.
Diese Zeile setzt den booleschen Parameter "isJumping" im Animator-Komponente auf false, was anzeigt, dass der Spieler das Springen und Fallen beendet hat und seine Animation zu Idle wechselt.
Diese Zeile wirft einen Strahl von der Position der Füße des Spielers (playerFeet.position
) nach unten, um zu erkennen, ob der Spieler auf dem Boden steht. Sie gibt true zurück, wenn der Strahl innerhalb einer Entfernung von 0,1 Einheiten mit einem Collider in der Bodenschicht kollidiert und aktualisiert entsprechend die Variable (isGrounded
).
Danke für Ihr Feedback!