Ateş Et
Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 9 / 25.
Bir kule, hedefe bir Projectile fırlatır. Atış, hedef yürürken onu takip ederek MoveTowards ile hedefe doğru ilerler ve vardığında ona hasar verir. Bir Enemy'ye isabet ettiğini bilmesi gerekmez: hasar alabilecek her şey için kullanılan arayüz olan IDamageable'ı ister; böylece bunu uygulayan her şeye ateş edilebilir.
Atış havadayken hedef ölebilir. Yok edilmiş bir Unity nesnesi null ile eşit sayıldığından, atış önce target == null koşulunu kontrol eder ve kendini yok eder.
Şimdilik bir kule saniyede bir kez ateş eder. Bir sonraki atışının zamanını tutar:
if (Time.time >= nextShot)
{
Fire();
nextShot = Time.time + 1f;
}Görev
OrtaKuleler saniyede bir ok atar.
Enemy,IDamageableuygular:TakeDamage(int amount),healthdeğerini azaltır ve değer 0 veya daha az olduğunda düşmanı yok eder.Projectile:Launch(Transform target, int damage)her ikisini de saklar;Update,speedhızında hedefe uçar, hedefe vardığındaTakeDamage(damage)çağrısı yapar ve kendini yok eder; hedef ortadan kaybolduğunda da kendini yok eder.Tower:public int damage = 2;ve[SerializeField] private Projectile projectilePrefab;ekleyin; yukarıdaki gibitransform.position + Vector3.upkonumundan ateş edin.
“Oyna” düğmesine basın: oklar uçar ve Grunt'lar düşer. Ardından “Kontrol et” düğmesine basın.
Kendin dene
using UnityEngine;
// Sonra eklenecek: bir kuleden hedefine doğru uçan bir mermi.
public class Projectile : MonoBehaviour
{
}
Unity Oyunu: Kule Savunması bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground