Menu
CoddyTech

Düşman Dalgaları

Coddy'nin Unity Journey'sinin Unity'de Oyun Mimarisi bölümünün bir parçası. Ders 44 / 50.

challenge icon

Görev

Orta

Düşmanlar artık dalgalar hâlinde geliyor ve dalgalar verilerden oluşuyor. Önceki derslerdeki her şeyi koru. Arenanın artık kendi düşmanları yok: Grunt ve Dasher prefablari betiklerini taşıyor, dört doğma noktası köşelerde duruyor ve ortadaki Spawner nesnesinde WaveSpawner betiği bulunuyor.

  • WaveSet.cs içinde, [System.Serializable] ile işaretlenmiş bir Wave sınıfı ekle. Bu sınıfta public Enemy enemy (prefab), public int count ve public float spacing olsun. WaveSet, [CreateAssetMenu] ile işaretlenmiş bir ScriptableObject olsun; public List<Wave> waves ve public float restBetweenWaves içersin. Sahnedeki Arena varlığı üç dalga (0.5 saniye arayla 3 Grunt, 1 saniye arayla 2 Dasher, 0.4 saniye arayla 5 Grunt) ve 2 saniyelik bir dinlenme süresi içersin.
  • Enemy sınıfına public static event Action<Enemy> Died ekle; düşman yok edilmeden hemen önce, düşman argüman olarak verilerek bu olay tetiklensin.
  • WaveSpawner sınıfında Inspector'dan alınan waveSet ve spawnPoints ile oyunda olan dalganın numarasını tutan public int Wave { get; private set; } bulunsun. Start içinden bir coroutine, varlığın dalgalarını sırayla çalıştırsın. Her dalga için: Wave değerini 1 artır ve Wave 1 olarak kaydet; dalganın count sayıda düşmanını, aralarında spacing saniye olacak şekilde oluştur; i. düşman (0'dan başlayarak) spawnPoints[i % spawnPoints.Length] noktasında oluşsun; hayatta düşman kalmayana kadar bekle; sonra restBetweenWaves saniye dinlen. Son dalgadan sonra set ilk dalgadan yeniden başlasın ve Wave saymaya devam etsin: 4, 5 ve böyle devam etsin.
  • Hayatta olan düşmanları Died olayıyla say: OnEnable içinde abone ol ve OnDisable içinde abonelikten çık. Spawner varlığı yalnızca okur: oyun çalışırken Editor'da bir varlıkta yapılan değişiklik, Play'den sonra da varlıkta kalır.

Play'e bas ve birkaç dalgadan sağ çık, ardından Check'e bas.

Kendin dene

using UnityEngine;

public class WaveSpawner : MonoBehaviour
{
    // Sonraki bir ders burayı tamamlayacak: dalgaları arenaya gönderecek.
}

Unity'de Oyun Mimarisi bölümündeki tüm dersler