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.
Sfida
FacileAssegna a ogni nemico le statistiche del suo tipo dal relativo asset.
- In
Enemy, sostituiscispeedconpublic EnemyData data;e fallo muovere adata.speed. - Aggiungi
private int health;e impostalo sudata.maxHealthinAwake.
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
1Il percorso
Punti di passaggioDati dei nemiciEsercitati da solo: Playground Unity