Unity 2D rastgele engel spawn etme nasıl yapılır?

Olur öyle yahu ne demek rica ederim.

Public gameobject[] prefablar;
public float spawntime = 2.0f;
void Start()
{
StartCoroutine(spawnlayıcı());
}
public IEnumerator spawnlayıcı()
{
Instantiate(prefablar[Random.Range(1, 4)],
New Vector3(18.46F, 4.01F, 0F), quaternion.
İdentity);
Yield return New waitforseconds(spawntime);
}
Son hali bu. Hareketli prefablarımı kodu çalıştırdığım objenin içine attım. Ama sadece bir kez spawnlıyor. Oyunu tekrar başlatıyorum ve tekrar bir kez spawnlıyor. Ve her başlattığımda aynı prefabı spawnlıyor. Bu defa nerede hata yapıyorum. Lütfen söyler misiniz?
 
Son düzenleyen: Moderatör:
Public gameobject[] prefablar;
public float spawntime = 2.0f;
void Start()
{
StartCoroutine(spawnlayıcı());
}
public IEnumerator spawnlayıcı()
{
Instantiate(prefablar[Random.Range(1, 4)],
New Vector3(18.46F, 4.01F, 0F), quaternion.
İdentity);
Yield return New waitforseconds(spawntime);
}
Son hali bu. Hareketli prefablarımı kodu çalıştırdığım objenin içine attım. Ama sadece bir kez spawnlıyor. Oyunu tekrar başlatıyorum ve tekrar bir kez spawnlıyor. Ve her başlattığımda aynı prefabı spawnlıyor. Bu defa nerede hata yapıyorum. Lütfen söyler misiniz?
Start kodu sadece oyunun başında bir kez çalışır. Kodunuzu update metodunun içine atmalısınız. Ancak bunu yaparken dikkat edin. Her saniye kodunuzu çağırmasın. Bunun için bir bool değeri oluşturun Şu şekilde (telefondan yazıyorum kusura bakmayın hatalar olabilir )

Bool isInstantiated = false;
Void Update ()
{
If (isInstantiated == false )
{
isInstantiated=true
StartCoroutine(spawnlayıcı)
}

Spawnlayıcı metodunuzun sonunda da isInstantiated değişkenini false yapın.
Bilgilendirmek için söyleyeyim. Awake() oyunun ilk başında scriptler çalışmaya başladığında starttan önce bir kez çağırılır
Start() oyunun ilk karesinde bir kez çalışır. Update() her bir karede bir çağrılır.FixedUpdate() sabit zaman aralığında ( default değeri 20ms) bir çağırılır. Bu fonksiyonları kullanarak metotlarınızı doğru olanların içine koyun.
Bir de bir tavsiye instantiate edeceğiniz pozisyonu elle vermeyin. En ufak değişimde kodu değiştirmeniz gerekir.kodda Public transform oluşturun. Sahnede bir obje oluşturup istediğiniz konuma sürükleyin. Koddaki Public transforma bu objenin transformunu verin ve instantiate için de bu transformu kullanın
 

Yeni konular

Geri
Yukarı