Unity "object spawner" nasıl yapılır?

Zafer Kutay

Kilopat
Katılım
30 Mart 2015
Mesajlar
61
Yer
Mersin
Daha fazla  
Sistem Özellikleri
Processor : AMD Ryzen 5 4600H 3.00GHz
RAM : 8GB
Systemtype : Windows 10, 64-bit
Graphics card : NVIDIA GeForce GTX 1650 4GB
Cinsiyet
Erkek
Unity'de 2D oyunumda, önümde sürekli olarak rastgele objelerin oluşmasını, ekrandan çıktıktan sonra da yok olmasını ayarlamaya çalışıyorum, aşağıda yazdığım kodlar sayesinde istediğim koordinatlarda oluşturup, istediğim koordinatlarda da yok edebiliyorum. Fakat sıkıntım şu ki arka plan için parallax background kullanıyorum bu yüzden karakterimin ve ekranımın sürekli olarak ilerlemesi gerekiyor. Sürekli olarak ilerlediği için de yazdığım koordinatlar bir süre sonra geride kalıyor ve bir türlü objeleri önümde spawn edemiyorum. İnternette çok arasam da bulamadım veya ben anlayamadım, belirli koordinatlar olmadan ekranımın önünde bir obje yaratıp sonrasında da ekrandan çıktığında nasıl yok edebilirim?

indir.png


indir (1).png


Kodlamalarla yapması çok karmaşık olacaksa veya benim gibi bilmeyenler varsa playmaker ile nasıl yapılacağını da anlatabilirsiniz.
 
Son düzenleyen: Moderatör:
Eğer sürekli tek yönlü hareket olan bir oyun ise karakteri hareket ettirmek yerine arka ve önplanları ters yönde hareket ettirebilirsiniz. Eğer öyle bir şey istemiyorsanız koordinatları global olarak değil de karakteri referans alarak ayarlayabilirsiniz.
 
Canlarım mantıken ne yapılması gerektiğini ben de biliyorum kodlamada yardım istemiştim ama çözdüm zaten problemi koordinat vermek yerine bir objeye spawn point değeri verdim onu da kameranın önüne sabitledim.
 
Sorununla alakalı değil ama 2. fotograftaki Generate kısmı için bir şeyler demek istiyorum.
GenerateObstacle kısmını o şekilde yazmak pek mantıklı değil. Yeni bir obje eklendiğinde bir çok yer değişiyor.
Bunun yerine objeleri bir listede oluştur. Rastgele bir index değer seçersin ve spawn edersin.
C#:
public List<GameObject> obstacleObjects;//Tüm engelleri burada tanımla.

public void GenerateObstacle() {
    int idx = Random.Range(0, obstacleObjects.Count);
    Instantiate(obstacleObjects[idx]);
}

Bu şekilde sadece listeyi güncelleyerek yeni engeller eklemiş olursun.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı