Ateş Et
Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 9 / 18.
Bir kule, hedefini saniyede fireRate kez vurur. Geri sayım yapan bir zamanlayıcı yerine kule, bir sonraki atışının zamanını tutar: Time.time bu zamana ulaştığında kule ateş eder ve zamanı 1f / fireRate saniye ileri alır. Saniyede iki kez su püskürten bir fıskiye:
if (Time.time >= nextSpray)
{
Spray();
nextSpray = Time.time + 1f / spraysPerSecond;
}Her atış, MoveTowards ile hedefine doğru ilerleyen, hedef yürürken onu takip eden ve ona vardığında hasar veren bir Projectile'dır. Bir Enemy'ye isabet ettiğini bilmesi gerekmez: Interfaces bölümünde olduğu gibi, hasar alabilen her şey için kullanılan arayüz olan IDamageable'ı hedefinden ister; böylece bu arayüzü uygulayan her şey vurulabilir.
Bir atış havadayken hedef, başka bir kulenin atışıyla öldürülebilir. Bu durumda atışın target'ı, yok edilmiş her Unity nesnesinde olduğu gibi null'a eşit olur ve atışın artık uçacağı bir yer kalmaz; bu yüzden kendini yok eder.
Görev
OrtaIDamageable,void TakeDamage(int amount)metodunu bildirir.Enemysınıfının bunu uygulamasını sağla: amount, canından düşülür ve can 0 veya daha az olduğunda düşman yok edilir.Projectilesınıfına serileştirilmiş bir floatspeed(prefab 12 olarak ayarlar) ve her ikisini de saklayanpublic void Launch(Transform target, int damage)metodunu ekle.Updateiçinde hedefe doğruspeedhızında ilerlesin; hedefe ulaştığında IDamageable üzerindekiTakeDamage(damage)metodunu çağır ve mermiyi yok et. Hedef artık yoksa mermiyi yok et.Towersınıfına bir public intdamage, bir public floatfireRate(saniyedeki atış sayısı) ve serileştirilmiş birprojectilePrefab(bir Projectile) ekle. Kule bir hedefe sahipken saniyede en fazlafireRatekez ateşlesin: mermiyi başın biraz önünde,head.position + head.forward * 0.6fkonumunda oluştur ve kulenin hasar değeriyle hedefe fırlat.
ArrowTower prefab'ı hasarı 2, fireRate değerini 1.5 olarak ayarlar ve mermisi ArrowShot'tur. Play'e bas, kuleler inşa et ve ilk dalgayı durdur, ardından Check'e bas.
Kendin dene
using UnityEngine;
// Daha sonra gelecek: Bir kuleden hedefine doğru uçan bir atış.
public class Projectile : MonoBehaviour
{
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.