Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Den Code Erklären | Verbessere das Flappy Bird Spiel
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
Den Code Erklären

Spieler-Code

Initialisierung in der Start-Methode

private void Start()
{
    startPosition = transform.position;
}

Zweck: Speichert die Anfangsposition des Spielers beim Start des Spiels.

Spielerposition zurücksetzen

public void RestartPlayerPosition()
{
    transform.position = startPosition;
    rb.velocity = Vector2.zero;
}

Zweck: Setzt die Position des Spielers auf die Startposition zurück und stoppt jegliche Bewegung, indem die Geschwindigkeit auf null gesetzt wird.

Verarbeitung der Spielereingabe in der Update-Methode

private void Update()
{
    Vector2 oldVelocity = rb.velocity;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        oldVelocity.y = 6;
    }
    oldVelocity.x = 4;
    rb.velocity = oldVelocity;
}

Zweck: Erfasst die Eingabe des Spielers (Leertaste), um den Spieler durch Setzen der y-Geschwindigkeit auf 6 "springen" zu lassen, während der Spieler durch Setzen der x-Geschwindigkeit auf 4 konstant nach rechts bewegt wird.

Kollisionsbehandlung

OnCollisionEnter2D

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
    {
        RestartPlayerPosition();
    }
}

Zweck: Setzt die Position des Spielers zurück, wenn eine Kollision mit Objekten mit dem Tag "ground" erfolgt.

OnTriggerEnter2D

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
    {
        winPanel.SetActive(true);
        SoundManager.instance.PlayEffect(1);
    }
}

Zweck: Aktiviert das Gewinn-Panel und spielt einen Soundeffekt ab, wenn der Spieler mit Objekten mit dem Tag "win" kollidiert.

Zusammenfassung

  • Bewegung: Spieler bewegt sich kontinuierlich nach rechts und springt, wenn die Leertaste gedrückt wird;
  • Neustart: Spielerposition wird bei Kollision mit dem Boden zurückgesetzt;
  • Gewinn: Zeigt ein Gewinn-Panel an und spielt einen Sound ab, wenn der Gewinn-Trigger erreicht wird.

SoundManager-Klasse

Start-Methode

private void Start()
{
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);
}

Zweck: Stellt sicher, dass es im Spiel nur eine Instanz von SoundManager gibt, indem das Singleton-Muster verwendet wird. Mit DontDestroyOnLoad(gameObject) bleibt das Objekt über verschiedene Szenen hinweg erhalten.

PlayEffect-Methode

public void PlayEffect(int index)
{
    if (index >= 0 && index < effects.Count)
    {
        source.PlayOneShot(effects[index]);
    }
}

Zweck: Verwendet einen ganzzahligen index, um den abzuspielenden Soundeffekt aus der Liste effects zu bestimmen. Es wird geprüft, ob der index im gültigen Bereich der Liste effects liegt, und der entsprechende Soundeffekt wird mit source.PlayOneShot(effects[index]) abgespielt.

Zusammenfassung

  • Singleton-Muster: Stellt sicher, dass nur eine Instanz von SoundManager im Spiel existiert und über Szenen hinweg erhalten bleibt;
  • Abspielen von Soundeffekten: Verwendet die Methode PlayEffect, um Soundeffekte durch Angabe ihres Indexes in der effects-Liste abzuspielen;
  • Audioquelle: Nutzt eine AudioSource-Komponente, um die Audioclips wiederzugeben.

WinPanel-Klasse

Die Klasse WinPanel bietet Funktionalität für das UI-Panel, das erscheint, wenn der Spieler gewinnt. Sie enthält Methoden, um zum Hauptmenü zurückzukehren oder das Level neu zu starten. Jede Methode spielt einen Soundeffekt ab und lädt die entsprechende Szene.

Methoden

ReturnToMainMenu-Methode

public void ReturnToMainMenu()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene(0);
}

Zweck: Spielt einen Soundeffekt (Index 0) mit SoundManager.instance.PlayEffect(0). Lädt die Hauptmenü-Szene mit Build-Index 0 über SceneManager.LoadScene(0).

RestartLevel-Methode

public void RestartLevel()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene("Game");
}

Zweck: Spielt einen Soundeffekt (Index 0) mit SoundManager.instance.PlayEffect(0). Lädt die Spielszene mit dem Namen "Game" über SceneManager.LoadScene("Game").

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 1

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
Den Code Erklären

Spieler-Code

Initialisierung in der Start-Methode

private void Start()
{
    startPosition = transform.position;
}

Zweck: Speichert die Anfangsposition des Spielers beim Start des Spiels.

Spielerposition zurücksetzen

public void RestartPlayerPosition()
{
    transform.position = startPosition;
    rb.velocity = Vector2.zero;
}

Zweck: Setzt die Position des Spielers auf die Startposition zurück und stoppt jegliche Bewegung, indem die Geschwindigkeit auf null gesetzt wird.

Verarbeitung der Spielereingabe in der Update-Methode

private void Update()
{
    Vector2 oldVelocity = rb.velocity;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        oldVelocity.y = 6;
    }
    oldVelocity.x = 4;
    rb.velocity = oldVelocity;
}

Zweck: Erfasst die Eingabe des Spielers (Leertaste), um den Spieler durch Setzen der y-Geschwindigkeit auf 6 "springen" zu lassen, während der Spieler durch Setzen der x-Geschwindigkeit auf 4 konstant nach rechts bewegt wird.

Kollisionsbehandlung

OnCollisionEnter2D

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
    {
        RestartPlayerPosition();
    }
}

Zweck: Setzt die Position des Spielers zurück, wenn eine Kollision mit Objekten mit dem Tag "ground" erfolgt.

OnTriggerEnter2D

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
    {
        winPanel.SetActive(true);
        SoundManager.instance.PlayEffect(1);
    }
}

Zweck: Aktiviert das Gewinn-Panel und spielt einen Soundeffekt ab, wenn der Spieler mit Objekten mit dem Tag "win" kollidiert.

Zusammenfassung

  • Bewegung: Spieler bewegt sich kontinuierlich nach rechts und springt, wenn die Leertaste gedrückt wird;
  • Neustart: Spielerposition wird bei Kollision mit dem Boden zurückgesetzt;
  • Gewinn: Zeigt ein Gewinn-Panel an und spielt einen Sound ab, wenn der Gewinn-Trigger erreicht wird.

SoundManager-Klasse

Start-Methode

private void Start()
{
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);
}

Zweck: Stellt sicher, dass es im Spiel nur eine Instanz von SoundManager gibt, indem das Singleton-Muster verwendet wird. Mit DontDestroyOnLoad(gameObject) bleibt das Objekt über verschiedene Szenen hinweg erhalten.

PlayEffect-Methode

public void PlayEffect(int index)
{
    if (index >= 0 && index < effects.Count)
    {
        source.PlayOneShot(effects[index]);
    }
}

Zweck: Verwendet einen ganzzahligen index, um den abzuspielenden Soundeffekt aus der Liste effects zu bestimmen. Es wird geprüft, ob der index im gültigen Bereich der Liste effects liegt, und der entsprechende Soundeffekt wird mit source.PlayOneShot(effects[index]) abgespielt.

Zusammenfassung

  • Singleton-Muster: Stellt sicher, dass nur eine Instanz von SoundManager im Spiel existiert und über Szenen hinweg erhalten bleibt;
  • Abspielen von Soundeffekten: Verwendet die Methode PlayEffect, um Soundeffekte durch Angabe ihres Indexes in der effects-Liste abzuspielen;
  • Audioquelle: Nutzt eine AudioSource-Komponente, um die Audioclips wiederzugeben.

WinPanel-Klasse

Die Klasse WinPanel bietet Funktionalität für das UI-Panel, das erscheint, wenn der Spieler gewinnt. Sie enthält Methoden, um zum Hauptmenü zurückzukehren oder das Level neu zu starten. Jede Methode spielt einen Soundeffekt ab und lädt die entsprechende Szene.

Methoden

ReturnToMainMenu-Methode

public void ReturnToMainMenu()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene(0);
}

Zweck: Spielt einen Soundeffekt (Index 0) mit SoundManager.instance.PlayEffect(0). Lädt die Hauptmenü-Szene mit Build-Index 0 über SceneManager.LoadScene(0).

RestartLevel-Methode

public void RestartLevel()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene("Game");
}

Zweck: Spielt einen Soundeffekt (Index 0) mit SoundManager.instance.PlayEffect(0). Lädt die Spielszene mit dem Namen "Game" über SceneManager.LoadScene("Game").

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 1
some-alt