Unity'de Basit Bir 2D Platform Oyunu Oluşturma

Bu eğitimde, Unity'de temel bir 2D platform oyunu yaratacağız. Bu, hareket edebilen, zıplayabilen ve platformlarla etkileşime girebilen bir oyuncu karakteri yaratmayı içerecek. Ayrıca engeller ve koleksiyon öğeleri gibi bazı temel oyun öğeleri de ekleyeceğiz.

1. Projenin Kurulumu

Yeni bir Unity 2D projesi kurarak başlayalım:

  1. Unity'i açın ve yeni bir 2D proje oluşturun.
  2. Dosya > Yeni Sahne'a gidin ve 2D Modunu seçin.
  3. Sahneyi MainScene olarak kaydedin.

2. Oyuncu Karakterinin Oluşturulması

Öncelikle bir sprite kullanarak basit bir oyuncu karakteri oluşturacağız ve hareket fonksiyonu ekleyeceğiz:

  1. Hiyerarşi penceresine sağ tıklayın ve Boş Oluştur'u seçin. Bu nesneye Oyuncu adını verin.
  2. Denetçi'deki Bileşen Ekle öğesine tıklayarak Oyuncu nesnesine bir Sprite Renderer bileşeni ekleyin.
  3. Karakter olarak kullanmak istediğiniz sprite'ı seçin; bunu ya kendi sprite'ınızı oluşturarak ya da Unity Asset Store'den 2 boyutlu bir varlık içe aktararak yapın.
  4. Fizik ve çarpışma tespiti için Player nesnesine Rigidbody2D ve BoxCollider2D ekleyin.

3. Oyuncu Hareketi Senaryosu Yazımı

Şimdi, oyuncunun hareket etmesini ve zıplamasını sağlayacak bir betik yazalım. Şu adımları izleyin:

  1. Proje penceresine sağ tıklayın ve Oluştur > C# Komut Dosyası'u seçin. Adını PlayerController olarak belirleyin.
  2. Bu betiği Proje penceresinden Hiyerarşi'deki Oynatıcı'ya sürükleyerek Oynatıcı nesnesine ekleyin.

Komut dosyasının içeriğini aşağıdakiyle değiştirin:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float jumpForce = 7f;
    private Rigidbody2D rb;
    private bool isGrounded = true;

    void Start()
    {
        rb = GetComponent();
    }

    void Update()
    {
        // Player movement
        float moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);

        // Jumping
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
            isGrounded = false;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        // Check if player is touching the ground
        if (collision.collider.CompareTag("Ground"))
        {
            isGrounded = true;
        }
    }
}

4. Platformlar ve Ortam Oluşturma

Şimdi oyuncunun zıplayabileceği platformlar oluşturacağız:

  1. Hiyerarşi'de sağ tıklayın ve Boş Oluştur'u seçin, ardından Platform adını verin.
  2. Platforma BoxCollider2D ve Sprite Renderer ekleyin.
  3. Platform için bir sprite seçin (örneğin, düz bir dikdörtgen).
  4. Platformu Ctrl+D (veya Mac'te Cmd+D) tuşlarına basarak kopyalayın ve kopyaları yerleştirerek bir seviye oluşturun.
  5. Oyuncunun zıplama mantığı için bu nesneleri Denetçi'de Zemin olarak etiketleyin.

5. Engeller Eklemek

Oyunu daha da zorlaştırmak için birkaç engel ekleyelim:

  • Başka bir boş GameObject yaratın ve adını Engel koyun.
  • Bu nesneye BoxCollider2D ve Sprite Renderer ekleyin.
  • Engel için bir sprite seçin (örneğin, bir sivri uç veya tehlike).
  • Oyuncunun OnCollisionEnter2D metodunda engellerle çarpışmaları tespit edip oyunu yeniden başlatabilir veya can düşebilirsiniz.

6. Koleksiyonluk Eşyalar Ekleme

Ayrıca madeni paralar veya güçlendirmeler gibi koleksiyon öğeleri de ekleyebiliriz:

  • Başka bir boş GameObject yaratın ve adını Collectible koyun.
  • Toplanabilir öğeyi temsil etmek için bir CircleCollider2D (tetikleyici olarak ayarlayın) ve bir Sprite Renderer ekleyin.
  • Oyuncunun bir eşya topladığını tespit eden basit bir betik yazın:
using UnityEngine;

public class Collectible : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            // Add points or other effects here
            Destroy(gameObject); // Remove the collectible from the scene
        }
    }
}

7. Oyunu Test Etme ve Ayarlama

Artık temel mekanikler yerli yerinde olduğuna göre, Oynat düğmesine basarak oyunu test edebilirsiniz. Aşağıdakileri ayarlamayı deneyin:

  • Oyuncunun ne kadar hızlı hareket ettiğini ve zıpladığını ayarlamak için moveSpeed ve jumpForce değerlerini değiştirin.
  • Farklı seviyeler oluşturmak için platformları ve engelleri çoğaltın.
  • Oyunu görsel olarak çekici kılmak için arka plan öğeleri veya süslemeler ekleyin.

8. Platformer'ı Geliştirmek

Platform oyununuzu bir üst seviyeye taşımak için şunları eklemeyi düşünebilirsiniz:

  • Oyuncuya yürüme ve zıplama gibi animasyonlar.
  • Zıplama, eşya toplama ve engellere çarpma ses efektleri.
  • Oyunun daha dinamik bir görünümü için oyuncunun hareketlerini takip eden bir kamera.

Çözüm

Bu basit 2D platform kurulumuyla artık daha fazla özellik, seviye ve cila ile genişletilebilen temel bir oyun yapısına sahipsiniz. Farklı mekaniklerle deneyler yapın ve kendi benzersiz platform oyununuzu yaratın.