Menu
CoddyTech

Düşman Verileri

Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 2 / 25.

Runner, Grunt'a katılıyor. Daha hızlıdır ve daha az sağlığı vardır; tüm Runner'lar bu değerleri paylaştığından, bu değerler tek bir düşmana değil türe aittir. Bu değerler, bir ScriptableObject varlığı olan verilen EnemyData içinde bulunur: projede GruntData (hız 2, sağlık 9) ve RunnerData (hız 3.5, sağlık 5) vardır ve Inspector, her düşmana kendi değerini bir data alanında verir.

Her düşman, bu değerlere ihtiyaç duyduğu her seferinde kendi türünün değerlerini bu alan üzerinden okur:

void Start()
{
    Debug.Log(name + " pays " + data.reward);
}

Sağlık farklıdır: darbe almış bir Grunt'un sağlığı, arkasındaki Grunt'tan daha azdır. Bu nedenle varlık maxHealth değerini tutar ve her düşman, nesne oluşturulur oluşturulmaz çalışan Awake içinde bu değeri kendi alanına kopyalar. Varlığın kendisini asla değiştirmeyin: o türdeki tüm düşmanlar değişir.

challenge icon

Görev

Kolay

Her düşmana, varlığına ait türün istatistiklerini ver.

  1. Enemy içinde speed yerine public EnemyData data; yaz ve data.speed hızında ilerle.
  2. private int health; ekle ve Awake içinde değerini data.maxHealth olarak ayarla.

“Oyna” düğmesine bas: Runner, Grunt'ı geçer. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed = 2f;
    public Transform[] waypoints;

    private int next = 1;

    void Update()
    {
        if (next >= waypoints.Length)
        {
            return;
        }

        Vector3 target = waypoints[next].position;
        transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
        if (transform.position == target)
        {
            next++;
        }
    }
}

Unity Oyunu: Kule Savunması bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground