Unity'de C# ile Mini Oyun Oluşturma

Bu eğitimde, C# kullanarak Unity'de bir mini oyun oluşturma sürecini ele alacağız. Sonunda, Unity'de oyun geliştirme hakkında temel bir anlayışa sahip olacak ve daha karmaşık oyunlar oluşturmak için bunu geliştirebileceksiniz.

Kurmak

Başlamadan önce, Unity'in kurulu olduğundan ve C# programlama konusunda temel bir anlayışa sahip olduğunuzdan emin olun. Yeni bir Unity projesi oluşturun veya mini oyununuzu oluşturmak istediğiniz mevcut bir projeyi açın.

Mini Oyun Konsepti

Mini oyunumuz basit bir "Catch the Falling Objects" oyunu olacak. Oyuncu ekranın alt kısmındaki bir küreği kontrol eder ve klavye girişini kullanarak düşen nesneleri yakalamaya çalışır.

Uygulama Adımları

Adım 1: Sahneyi Kurma

  1. Yeni bir 2D Unity projesi oluşturun veya mevcut bir projeyi kullanın.
  2. Oyuncunun küreği ve düşen nesneler için 2 boyutlu bir sprite yaratın.
  3. Bir zemin nesnesi yaratın ve oyun alanı için bir sınır belirleyin.

Adım 2: Oyuncu Kontrolcüsü Komut Dosyası

Oyuncunun küreğini kontrol etmek için bir C# betiği oluşturun. Bu betiği kürek GameObject'ine ekleyin.

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed = 5f; // Adjust speed as needed

    void Update()
    {
        float moveInput = Input.GetAxis("Horizontal");
        float moveAmount = moveInput * speed * Time.deltaTime;
        transform.Translate(Vector3.right * moveAmount);

        // Clamp player within screen boundaries
        float screenEdge = Camera.main.orthographicSize * Camera.main.aspect;
        float clampX = Mathf.Clamp(transform.position.x, -screenEdge, screenEdge);
        transform.position = new Vector3(clampX, transform.position.y, transform.position.z);
    }
}

Adım 3: Düşen Nesneler Üreticisi

Ekranın üstünden rastgele düşen nesneler oluşturmak için bir betik oluşturun. Bu betiği boş bir GameObject'e ekleyin veya GameManager içinde yönetin.

using UnityEngine;

public class ObjectGenerator : MonoBehaviour
{
    public GameObject objectPrefab;
    public float spawnInterval = 1f;
    public float spawnWidth = 4f;

    void Start()
    {
        InvokeRepeating("SpawnObject", 0f, spawnInterval);
    }

    void SpawnObject()
    {
        float randomX = Random.Range(-spawnWidth, spawnWidth);
        Vector3 spawnPosition = new Vector3(randomX, transform.position.y, transform.position.z);
        Instantiate(objectPrefab, spawnPosition, Quaternion.identity);
    }
}

Adım 4: Nesne Toplama ve Puanlama

Oyuncunun küreğiyle nesne toplamayı ele alan ve puanı güncelleyen bir betik oluşturun. Bu betiği düşen nesnelere ekleyin.

using UnityEngine;

public class ObjectCollector : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            // Handle scoring or game logic here
            Destroy(gameObject); // Destroy the collected object
        }
    }
}

Adım 5: Oyun Yöneticisi

Oyun durumunu, puanlamayı ve oyun bitme koşullarını yönetmek için bir GameManager betiği oluşturun.

using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    public GameObject gameOverUI;
    bool isGameOver = false;

    void Update()
    {
        if (!isGameOver && GameOverCondition())
        {
            GameOver();
        }
    }

    bool GameOverCondition()
    {
        // Define your game over condition here (e.g., time limit, lives lost)
        return false;
    }

    void GameOver()
    {
        isGameOver = true;
        gameOverUI.SetActive(true); // Display game over UI
        Time.timeScale = 0f; // Freeze game time
    }

    public void RestartGame()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}

Adım 6: Kullanıcı Arayüzü Kurulumu

Skor gösterimi, oyun bitti ekranı ve yeniden başlatma düğmesi gibi kullanıcı arayüzü öğeleri oluşturun. Oyunu yeniden başlatmak için GameManager yöntemlerini uygun kullanıcı arayüzü düğmelerine ekleyin.

Çözüm

C# kullanarak Unity'de basit bir mini oyun oluşturdunuz. Bu temel kurulum, güçlendirmeler, seviyeler ve daha karmaşık oyun mekanikleri gibi ek özellikler ile genişletilebilir. Mini oyununuzu daha ilgi çekici ve keyifli hale getirmek için farklı fikirler deneyin.