Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Spieleranimation Abschließen | Unity-Animationssystem
Kampfspiel in Unity
course content

Kursinhalt

Kampfspiel in Unity

Kampfspiel in Unity

1. Unity-Animationssystem
2. Spielerverhalten
3. Feindverhalten
4. Spiel Verbessern
5. Verbessere das Flappy Bird Spiel

book
Spieleranimation Abschließen

Sprunganimation

Für den Sprung werden wir zwei Animationen verwenden: Da der Spieler springt und dann fällt, müssen wir dafür zwei Animationen erstellen. Der Übergang zwischen ihnen basiert auf der „y-Geschwindigkeit“ des Spielers; ist y positiv, springt er, ist y negativ, fällt er. Die y-Geschwindigkeit erhalten wir aus der Rigidbody2D-Komponente, die dem Spieler zugeordnet ist.

animator.SetFloat("JumpingForce", rb.velocity.y);

Dieser Code weist den Wert für den Übergangsparameter zwischen Sprung und Fall zu.

Code-Erklärung

if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
    rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
    animator.SetBool("isJumping", true);
}

if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
    animator.SetBool("isJumping", false);
}

animator.SetFloat("JumpingForce", rb.velocity.y);

isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
    // Code to execute when the conditions are met
}

Diese Zeile prüft, ob die Leertaste gedrückt wird (Input.GetKeyDown(KeyCode.Space)), der Spieler sich am Boden befindet (isGrounded) und der Spieler aktuell nicht angreift (animator.GetBool("isAttacking") == false). Wenn alle Bedingungen erfüllt sind, wird der folgende Codeblock ausgeführt.

rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);

Diese Zeile fügt der am Spieler angebrachten Rigidbody-Komponente (rb) eine Aufwärtskraft hinzu und simuliert so einen Sprung. Die angewendete Kraft wirkt in Aufwärtsrichtung (Vector2.up) mit der durch jumpForce definierten Stärke und wird impulsiv angewendet (ForceMode2D.Impulse).

animator.SetBool("isJumping", true);

Diese Zeile setzt einen booleschen Parameter "isJumping" in der Animator-Komponente auf true und löst damit die Sprunganimation aus.

if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
    // Code to execute when the conditions are met
}

Diese Zeile prüft, ob der Spieler aktuell springt (animator.GetBool("isJumping") == true), die vertikale Geschwindigkeit des Spielers negativ ist (rb.velocity.y < 0) und der Spieler den Boden berührt (isGrounded). Wenn alle Bedingungen erfüllt sind, wird der nachfolgende Codeblock ausgeführt.

animator.SetBool("isJumping", false);

Diese Zeile setzt den booleschen Parameter "isJumping" in der Animator-Komponente auf false, was anzeigt, dass der Spieler das Springen und Fallen beendet hat und seine Animation auf Idle wechselt.

isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);

Diese Zeile sendet einen Strahl von der Position der Spielerfüße (playerFeet.position) nach unten, um zu erkennen, ob der Spieler den Boden berührt. Sie gibt true zurück, wenn der Strahl innerhalb einer Distanz von 0,1 Einheiten mit einem Collider in der Bodenschicht kollidiert und aktualisiert entsprechend die Variable isGrounded.

question mark

Was stellt ein raycast in Unity dar?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 6

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

course content

Kursinhalt

Kampfspiel in Unity

Kampfspiel in Unity

1. Unity-Animationssystem
2. Spielerverhalten
3. Feindverhalten
4. Spiel Verbessern
5. Verbessere das Flappy Bird Spiel

book
Spieleranimation Abschließen

Sprunganimation

Für den Sprung werden wir zwei Animationen verwenden: Da der Spieler springt und dann fällt, müssen wir dafür zwei Animationen erstellen. Der Übergang zwischen ihnen basiert auf der „y-Geschwindigkeit“ des Spielers; ist y positiv, springt er, ist y negativ, fällt er. Die y-Geschwindigkeit erhalten wir aus der Rigidbody2D-Komponente, die dem Spieler zugeordnet ist.

animator.SetFloat("JumpingForce", rb.velocity.y);

Dieser Code weist den Wert für den Übergangsparameter zwischen Sprung und Fall zu.

Code-Erklärung

if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
    rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
    animator.SetBool("isJumping", true);
}

if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
    animator.SetBool("isJumping", false);
}

animator.SetFloat("JumpingForce", rb.velocity.y);

isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
    // Code to execute when the conditions are met
}

Diese Zeile prüft, ob die Leertaste gedrückt wird (Input.GetKeyDown(KeyCode.Space)), der Spieler sich am Boden befindet (isGrounded) und der Spieler aktuell nicht angreift (animator.GetBool("isAttacking") == false). Wenn alle Bedingungen erfüllt sind, wird der folgende Codeblock ausgeführt.

rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);

Diese Zeile fügt der am Spieler angebrachten Rigidbody-Komponente (rb) eine Aufwärtskraft hinzu und simuliert so einen Sprung. Die angewendete Kraft wirkt in Aufwärtsrichtung (Vector2.up) mit der durch jumpForce definierten Stärke und wird impulsiv angewendet (ForceMode2D.Impulse).

animator.SetBool("isJumping", true);

Diese Zeile setzt einen booleschen Parameter "isJumping" in der Animator-Komponente auf true und löst damit die Sprunganimation aus.

if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
    // Code to execute when the conditions are met
}

Diese Zeile prüft, ob der Spieler aktuell springt (animator.GetBool("isJumping") == true), die vertikale Geschwindigkeit des Spielers negativ ist (rb.velocity.y < 0) und der Spieler den Boden berührt (isGrounded). Wenn alle Bedingungen erfüllt sind, wird der nachfolgende Codeblock ausgeführt.

animator.SetBool("isJumping", false);

Diese Zeile setzt den booleschen Parameter "isJumping" in der Animator-Komponente auf false, was anzeigt, dass der Spieler das Springen und Fallen beendet hat und seine Animation auf Idle wechselt.

isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);

Diese Zeile sendet einen Strahl von der Position der Spielerfüße (playerFeet.position) nach unten, um zu erkennen, ob der Spieler den Boden berührt. Sie gibt true zurück, wenn der Strahl innerhalb einer Distanz von 0,1 Einheiten mit einem Collider in der Bodenschicht kollidiert und aktualisiert entsprechend die Variable isGrounded.

question mark

Was stellt ein raycast in Unity dar?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 6
some-alt