Unity'de Flappy Bird'den Esinlenen Bir Oyun Nasıl Yapılır

Bu Unity eğitiminde, bir Flappy Bird oyunu oluşturma sürecini adım adım anlatacağız. Bu klasik mobil oyun, bir kuşun kanat çırpmasını ve engellerden kaçmasını sağlamak için ona hafifçe vurarak bir dizi borunun içinden geçirmesini içerir. Adım adım talimatlara geçelim.

1. Adım: Unity Projenizi Kurun

  • Henüz yapmadıysanız Unity'i açın ve bir yeni 2D proje oluşturun.
  • Çözünürlük ve platform hedefleme dahil proje ayarlarınızı yapın.

2. Adım: Oyun Varlıklarını İçe Aktarın

Adım 3: Flappy Bird'ü Yaratın

  • Kuş için 2 boyutlu bir hareketli grafik ekleyin.
  • Kuş kanadını yapmak için basit musluk kontrollerini uygulayın.
  • Kuşun doğal bir şekilde düşmesini sağlamak için yer çekimini uygulayın.

Adım 4: Boruları Tasarlayın

  • 2B hareketli görüntüleri kullanarak bir prefab borusu oluşturun.
  • Düzenli aralıklarla borular oluşturmak için bir yumurtlama sistemi kurun.

Adım 5: Oyun Mantığını Uygulama

  • Borulardan başarılı bir şekilde geçmek için bir puanlama sistemi ekleyin.
  • Kuş borulara veya yere çarptığında oyunu sonlandırmak için çarpışma algılamayı uygulayın.

Aşağıdaki betiği kontrol edin, 3, 4 ve 5. bölümleri kapsıyor.

'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!");
    }
}

Sağlanan Unity komut dosyası, oyuncu tarafından kontrol edilen kuşun kayan bir ortamda gezindiği basitleştirilmiş bir Flappy Bird oyununu temsil eder. Kuş, kullanıcı girişi üzerine atlayabilir ve oyun, hem borularla hem de zeminle çarpışmaları kontrol eder ve tespit edilmesi durumunda oyunun bitmesini tetikler. Borular düzenli aralıklarla dinamik olarak oluşturulur ve oyuncuya doğru hareket eder. Komut dosyası, performansı optimize etmek için kamera görünümünün dışına çıkan boruları kaldırmaya yönelik bir mantık içerir. 'EndGame' işlevi çarpışma durumunda çağrılır ve bir skorun görüntülenmesi veya oyunun yeniden başlatılması gibi çeşitli oyun bitti senaryolarını yönetecek şekilde genişletilebilir. Kod, Flappy Bird mekaniğinin Unity ortamında temel bir uygulamasını sunmayı amaçlamaktadır.

Adım 6: Kullanıcı Arayüzü ve Menüler

  • Puanı görüntülemek için bir kullanıcı arayüzü tasarlayın.
  • Oyunu başlatmak ve yeniden başlatmak için menüler oluşturun.

Adım 7: Oynanışta İnce Ayar Yapın

  • Dengeli ve keyifli bir deneyim için oyun fiziği ve hızını ayarlayın.
  • Sorunsuz ve zorlu bir oyun deneyimi sağlamak için oyununuzu test edin ve yineleyin.

Adım 8: Ses Efektleri Ekleyin

'FlappyBird.cs''ya ses efektleri eklemek için örnek değişiklikler

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...
}

Adım 9: Oluşturun ve Dağıtın

  • Oyununuzu hedef platformunuza (iOS, Android vb.) göre oluşturun.
  • Seçtiğiniz cihaza veya emülatöre dağıtın ve test edin.

Çözüm

Bu eğitim, bu klasik Flappy Bird oyununu Unity'de yeniden oluşturmak için gerekli adımları kapsar. Oyunu kendinize ait hale getirmek için ek özellikler ve iyileştirmelerle denemeler yapın. Mutlu oyun geliştirme!

Önerilen Makaleler
Unity'de Yılan Oyunu Nasıl Yapılır
Unity'de Mini Oyun | Flappy Küp
Unity için Sonsuz Koşucu Eğitimi
Unity'de 2D Tuğla Kırıcı Oyunu Oluşturma
Unity'de Kayan Bulmaca Oyunu Oluşturma
Unity'de Mini Oyun | CUBEkaçının
Unity'de 3'lü Eşleştirme Bulmaca Oyunu Eğitimi