Menu
CoddyTech

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;
}
challenge icon

Görev

Orta

Kuleler saniyede bir ok atar.

  1. Enemy, IDamageable uygular: TakeDamage(int amount), health değerini azaltır ve değer 0 veya daha az olduğunda düşmanı yok eder.
  2. Projectile: Launch(Transform target, int damage) her ikisini de saklar; Update, speed hızında hedefe uçar, hedefe vardığında TakeDamage(damage) çağrısı yapar ve kendini yok eder; hedef ortadan kaybolduğunda da kendini yok eder.
  3. Tower: public int damage = 2; ve [SerializeField] private Projectile projectilePrefab; ekleyin; yukarıdaki gibi transform.position + Vector3.up konumundan 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