Menu
CoddyTech

Dati dei nemici

Lezione 2 di 25 del corso Gioco Unity: Tower Defense di Coddy.

Un Runner si unisce al Grunt. È più veloce e ha meno salute, e tutti i Runner condividono questi valori, quindi appartengono al tipo, non a un singolo nemico. Sono contenuti nel dato EnemyData, una risorsa ScriptableObject: il progetto ha GruntData (velocità 2, salute 9) e RunnerData (velocità 3.5, salute 5), e nell'Inspector ogni nemico riceve il proprio in un campo data.

Ogni nemico legge i valori del proprio tipo tramite quel campo, ogni volta che ne ha bisogno:

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

La salute è diversa: un Grunt che ha subito un colpo ha meno salute del Grunt che lo segue. Perciò la risorsa contiene maxHealth, e ogni nemico ne copia il valore in un proprio campo in Awake, che viene eseguito appena l'oggetto viene creato. Non modificare mai la risorsa stessa: cambierebbero tutti i nemici di quel tipo.

challenge icon

Sfida

Facile

Assegna a ogni nemico le statistiche del suo tipo dal relativo asset.

  1. In Enemy, sostituisci speed con public EnemyData data; e fallo muovere a data.speed.
  2. Aggiungi private int health; e impostalo su data.maxHealth in Awake.

Premi «Gioca»: il Runner supera il Grunt. Poi premi «Verifica».

Provalo tu

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++;
        }
    }
}

Tutte le lezioni di Gioco Unity: Tower Defense

Esercitati da solo: Playground Unity