Cara Membuat Game Terinspirasi Flappy Bird di Unity

Dalam tutorial Unity ini, kita akan memandu proses pembuatan game Flappy Bird. Game seluler klasik ini melibatkan memandu seekor burung melewati serangkaian pipa dengan mengetuknya untuk membuatnya mengepak dan menghindari rintangan. Mari selami petunjuk langkah demi langkah.

Langkah 1: Siapkan Proyek Unity Anda

  • Jika belum, buka Unity dan buat proyek 2D baru.
  • Siapkan pengaturan proyek Anda, termasuk resolusi dan penargetan platform.

Langkah 2: Impor Aset Game

Langkah 3: Buat Flappy Bird

  • Tambahkan sprite 2D untuk burung.
  • Terapkan kontrol ketuk sederhana untuk membuat burung mengepak.
  • Terapkan gravitasi untuk membuat burung jatuh secara alami.

Langkah 4: Rancang Pipa

  • Buat pipa prefab menggunakan sprite 2D.
  • Siapkan sistem spawn untuk menghasilkan pipa secara berkala.

Langkah 5: Terapkan Logika Game

  • Tambahkan sistem penilaian agar berhasil melewati pipa.
  • Terapkan deteksi tabrakan untuk mengakhiri permainan ketika burung menabrak pipa atau tanah.

Periksa skrip di bawah ini, ini merangkum bagian 3, 4, dan 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!");
    }
}

Kode ini bertujuan untuk menawarkan implementasi dasar mekanisme Flappy Bird dalam lingkungan Unity.Fungsi 'EndGame' dipanggil saat terjadi tabrakan, dan dapat diperluas untuk menangani berbagai skenario permainan berakhir, seperti menampilkan skor atau memulai ulang permainan. Skrip ini menyertakan logika untuk menghilangkan pipa yang berada di luar tampilan kamera untuk mengoptimalkan kinerja. Pipa muncul secara dinamis secara berkala dan bergerak ke arah pemutar. Burung dapat melompat berdasarkan masukan pengguna, dan permainan memeriksa tabrakan dengan pipa dan tanah, sehingga memicu permainan berakhir jika terdeteksi.

Langkah 6: UI dan Menu

  • Rancang UI untuk menampilkan skor.
  • Buat menus untuk memulai dan memulai ulang game.

Langkah 7: Sempurnakan Gameplay

  • Sesuaikan permainan fisika dan kecepatan untuk pengalaman yang seimbang dan menyenangkan.
  • Uji dan ulangi game Anda untuk memastikan gameplay yang lancar dan menantang.

Langkah 8: Tambahkan Efek Suara

  • Impor atau buat efek suara untuk mengepak, mencetak gol, dan bertabrakan.
  • Integrasikan efek suara ini ke dalam game Anda.

Contoh modifikasi untuk menambahkan efek suara di '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...
}

Langkah 9: Bangun dan Terapkan

  • Bangun game Anda untuk platform target Anda (iOS, Android, dll.).
  • Terapkan dan uji pada perangkat atau emulator pilihan Anda.

Kesimpulan

Tutorial ini mencakup langkah-langkah penting untuk membuat ulang game Flappy Bird klasik ini di Unity. Bereksperimenlah dengan fitur dan peningkatan tambahan untuk menjadikan game ini milik Anda. Selamat mengembangkan game!

Artikel yang Disarankan
Mini Game dalam Persatuan | Kubus Flappy
Cara Membuat Game Ular di Unity
Membuat Game Pemecah Bata 2D di Unity
Membuat Game Puzzle Geser dalam Unity
Mini Game dalam Persatuan | HINDARI KUBUS
Tutorial Game Puzzle Mencocokkan-3 di Unity
Zombi Pertanian | Pembuatan Game Platformer 2D dalam Unity