So erstellen Sie ein von Flappy Bird inspiriertes Spiel in Unity

In diesem Unity-Tutorial gehen wir durch den Prozess der Erstellung eines Flappy Bird-Spiels. Bei diesem klassischen Handyspiel geht es darum, einen Vogel durch eine Reihe von Rohren zu steuern, indem man ihn durch Antippen zum Flattern bringt und Hindernissen ausweicht. Lassen Sie uns in die Schritt-für-Schritt-Anleitung eintauchen.

Schritt 1: Richten Sie Ihr Unity-Projekt ein

  • Wenn Sie es noch nicht getan haben, öffnen Sie Unity und erstellen Sie ein neues 2D-Projekt.
  • Richten Sie Ihre Projekteinstellungen ein, einschließlich Auflösung und Plattform-Targeting.

Schritt 2: Spiel-Assets importieren

Schritt 3: Erstellen Sie den Flappy Bird

  • Fügen Sie ein 2D-Sprite für den Vogel hinzu.
  • Implementieren Sie einfache Tippsteuerungen, um den Vogel zum Flattern zu bringen.
  • Wenden Sie die Schwerkraft an, damit der Vogel auf natürliche Weise fällt.

Schritt 4: Entwerfen Sie die Rohre

  • Erstellen Sie eine Pipe prefab mit 2D-Sprites.
  • Richten Sie ein Spawn-System ein, um in regelmäßigen Abständen Pipes zu generieren.

Schritt 5: Spiellogik implementieren

  • Fügen Sie ein Punktesystem für den erfolgreichen Durchgang durch Rohre hinzu.
  • Implementieren Sie eine Kollisionserkennung, um das Spiel zu beenden, wenn der Vogel auf Rohre oder den Boden trifft.

Sehen Sie sich das folgende Skript an. Es enthält die Teile 3, 4 und 5.

'FlappyBird.cs'

using UnityEngine;
using System.Collections.Generic;

public class FlappyBird : MonoBehaviour
{
    public float jumpForce = 5f;
    public Transform pipeSpawnPoint;
    public GameObject pipePrefab;
    public float pipeSpawnInterval = 2f;
    public float pipeSpeed = 2f;

    private Rigidbody2D rb;
    private Transform mainCameraTransform;

    private List<GameObject> pipes = new List<GameObject>();

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        mainCameraTransform = Camera.main.transform;

        // Start spawning pipes
        InvokeRepeating("SpawnPipe", 2f, pipeSpawnInterval);
    }

    void Update()
    {
        // Flap when the screen is tapped or clicked
        if (Input.GetMouseButtonDown(0))
        {
            Flap();
        }

        // Move towards the pipes
        transform.Translate(Vector3.right * pipeSpeed * Time.deltaTime);

        // Move and manage spawned pipes
        foreach (GameObject pipe in pipes)
        {
            if (pipe != null)
            {
                pipe.transform.Translate(Vector3.left * pipeSpeed * Time.deltaTime);

                // End the game when colliding with pipes or ground
                if (pipe.CompareTag("Pipe") && IsCollidingWithPipe(pipe))
                {
                    EndGame();
                    return; // Exit the loop and update immediately
                }

                if (pipe.CompareTag("Ground") && IsCollidingWithGround(pipe))
                {
                    EndGame();
                    return; // Exit the loop and update immediately
                }

                // Remove pipes that are out of camera view
                if (pipe.transform.position.x < mainCameraTransform.position.x - 10f)
                {
                    Destroy(pipe);
                    pipes.Remove(pipe);
                    break; // Exit the loop to avoid modifying a collection while iterating
                }
            }
        }
    }

    void Flap()
    {
        // Apply force to make the bird jump
        rb.velocity = new Vector2(rb.velocity.x, jumpForce);
    }

    void SpawnPipe()
    {
        GameObject newPipe = Instantiate(pipePrefab, pipeSpawnPoint.position, Quaternion.identity);
        pipes.Add(newPipe);
    }

    bool IsCollidingWithPipe(GameObject pipe)
    {
        Collider2D pipeCollider = pipe.GetComponent<Collider2D>();
        return pipeCollider != null && pipeCollider.bounds.Intersects(GetComponent<Collider2D>().bounds);
    }

    bool IsCollidingWithGround(GameObject ground)
    {
        Collider2D groundCollider = ground.GetComponent<Collider2D>();
        return groundCollider != null && groundCollider.bounds.Intersects(GetComponent<Collider2D>().bounds);
    }

    void EndGame()
    {
        // Implement game over logic (e.g., display score, restart menu)
        Debug.Log("Game Over!");
    }
}

Das bereitgestellte Unity-Skript stellt ein vereinfachtes Flappy Bird-Spiel dar, bei dem der vom Spieler gesteuerte Vogel durch eine scrollende Umgebung navigiert. Der Vogel kann auf Benutzereingabe springen, und das Spiel prüft, ob es zu Kollisionen mit den Rohren und dem Boden kommt, und löst bei Erkennung ein Game Over aus. Rohre werden in regelmäßigen Abständen dynamisch erzeugt und bewegen sich auf den Spieler zu. Das Skript enthält Logik zum Entfernen von Pipes, die außerhalb der Kameraansicht verlaufen, um die Leistung zu optimieren. Die Funktion 'EndGame' wird bei einer Kollision aufgerufen und kann erweitert werden, um verschiedene Game-Over-Szenarien zu verarbeiten, z. B. die Anzeige eines Spielstands oder den Neustart des Spiels. Der Code zielt darauf ab, eine grundlegende Implementierung der Flappy Bird-Mechanik in einer Unity-Umgebung anzubieten.

Schritt 6: Benutzeroberfläche und Menüs

  • Entwerfen Sie eine Benutzeroberfläche für die Anzeige der Partitur.
  • Erstellen Sie Menüs zum Starten und Neustarten des Spiels.

Schritt 7: Feinabstimmung des Gameplays

  • Passen Sie das Spiel Physik und die Geschwindigkeit an, um ein ausgewogenes und unterhaltsames Erlebnis zu erzielen.
  • Testen und wiederholen Sie Ihr Spiel, um ein reibungsloses und herausforderndes Gameplay zu gewährleisten.

Schritt 8: Soundeffekte hinzufügen

  • Importieren Sie oder erstellen Sie Soundeffekte für Flattern, Punkte und Kollisionen.
  • Integrieren Sie diese Soundeffekte in Ihr Spiel.

Beispielmodifikationen zum Hinzufügen von Soundeffekten in 'FlappyBird.cs':

using UnityEngine;
using System.Collections.Generic;

public class FlappyBird : MonoBehaviour
{
    // Existing variables...

    public AudioClip jumpSound;
    public AudioClip collisionSound;
    public AudioClip gameOverSound;

    private AudioSource audioSource;

    void Start()
    {
        // Existing Start() code...

        // Add AudioSource component and reference
        audioSource = gameObject.AddComponent<AudioSource>();
    }

    void Flap()
    {
        // Apply force to make the bird jump
        rb.velocity = new Vector2(rb.velocity.x, jumpForce);

        // Play jump sound
        audioSource.PlayOneShot(jumpSound);
    }

    void EndGame()
    {
        // Play game over sound
        audioSource.PlayOneShot(gameOverSound);

        // Implement other game over logic...
    }

    // Existing code...
}

Schritt 9: Erstellen und Bereitstellen

  • Erstellen Sie Ihr Spiel für Ihre Zielplattform (iOS, Android usw.).
  • Stellen Sie es auf dem von Ihnen gewählten Gerät oder Emulator bereit und testen Sie es.

Abschluss

Dieses Tutorial behandelt die wesentlichen Schritte, um dieses klassische Flappy Bird-Spiel in Unity nachzubilden. Experimentieren Sie mit zusätzlichen Funktionen und Verbesserungen, um das Spiel zu Ihrem eigenen zu machen. Viel Spaß bei der Spieleentwicklung!

Empfohlene Artikel
Minispiel in Unity | Flappy Cube
So erstellen Sie ein Schlangenspiel in Unity
Erstellen eines 2D-Brick-Breaker-Spiels in Unity
Erstellen eines Schiebepuzzlespiels in Unity
Endless Runner-Tutorial für Unity
Tutorial für das Match-3-Puzzlespiel in Unity
Minispiel in Unity | WÜRFELvermeiden