C# kullanarak basit bir yakalamaç oyunu oluşturmak oldukça kolaydır. Aşağıdaki adımları takip ederek oyunu oluşturabilirsiniz:
Unity’yi yükleyin ve bir proje oluşturun.
Sahne panelinde, bir arka plan ekleyin ve oyun alanınızı oluşturun. Oyun alanı içerisinde düzenli aralıklarla rastgele konumlarda nesneler (top, yıldız vb.) ekleyin.
Oyuncu karakterini oluşturun ve hareketini sağlamak için C# kodu yazın. Karakterin hareketini sağlamak için transform.position özelliğini kullanabilirsiniz.
Karakterin, nesneleri yakalama mekanizmasını oluşturun. Karakter, nesnelere temas ettiğinde nesneleri yok etmeli ve puan sayacını artırmalıdır.
Zamanlayıcıyı oluşturun. Belirli bir sürenin sonunda oyunun bitmesi için bir zamanlayıcı ekleyin.
Oyun bitiş mekanizmasını oluşturun. Zamanlayıcı, oyun alanından çıkmak veya belirli sayıda nesne yakalamak gibi durumlarda da tetiklenebilir.
Aşağıdaki kod parçası, basit bir yakalamaç oyununun nasıl oluşturulabileceğine dair bir örnek sunar:
using UnityEngine; public class Player : MonoBehaviour { public float speed = 5f; public int score = 0; public int maxScore = 10; public float timeLeft = 30f; public Text scoreText; public Text timeText; public GameObject winPanel; public GameObject losePanel; void Update() { float moveHorizontal = Input.GetAxis(“Horizontal”); float moveVertical = Input.GetAxis(“Vertical”); Vector3 movement = new Vector3(moveHorizontal, moveVertical, 0f); transform.position += movement * Time.deltaTime * speed; timeLeft -= Time.deltaTime; timeText.text = “Time Left: ” + Mathf.RoundToInt(timeLeft); if (timeLeft <= 0 || score >= maxScore) { EndGame(); } } void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.CompareTag(“Collectible”)) { score++; scoreText.text = “Score: ” + score; Destroy(col.gameObject); } } void EndGame() { if (score >= maxScore) { winPanel.SetActive(true); } else { losePanel.SetActive(true); } Time.timeScale = 0f; } }
Yukarıdaki örnekte, Player adlı bir C# sınıfı tanımlanmıştır. Bu sınıf, MonoBehaviour sınıfından türetilmiştir ve bu sayede Unity’de bir oyun nesnesi olarak kullanılabilir.
Sınıfın başında, oyuncunun hızı, skoru, kazanma için gereken maksimum skor, kalan süre gibi değişkenler tanımlanmıştır. Ayrıca oyun sırasında skor ve süre göstergelerini güncellemek için Text tipinde değişkenler ve oyunun bitiş durumlarını göstermek için GameObject tipinde değişkenler tanımlanmıştır.
Update() metodu, her karede bir kez çağrılır ve oyuncunun hareketini, kalan süreyi ve oyunun bitiş durumunu kontrol eder. Oyuncunun hareketi, Input.GetAxis() fonksiyonu kullanılarak sağlanır. timeLeft değişkeni her karede azaltılarak süre sayacı güncellenir. Oyunun bitiş durumu, timeLeft değişkeninin sıfıra veya altına düşmesi veya score değişkeninin maksimum skora ulaşması durumunda tetiklenir.
OnCollisionEnter2D() metodu, oyuncunun nesnelere temas ettiğinde çalışır. Eğer temas edilen nesne “Collectible” tag’ine sahipse, skor sayacı artırılır, skor göstergesi güncellenir ve nesne yok edilir.
EndGame() metodu, oyunun sonlandırılması için kullanılır. Eğer oyuncu maksimum skora ulaşırsa, kazanma paneli aktif hale getirilir. Aksi takdirde kaybetme paneli aktif hale getirilir. Son olarak, Time.timeScale özelliği sıfıra eşitlenerek oyun durdurulur.
Bu örnekteki kod, sadece temel bir yakalamaç oyunu oluşturmak için yeterli olabilir. Daha gelişmiş oyunlar için, oyun mekaniğini genişletebilir, görsel efektler ve sesler ekleyebilirsiniz.