Datos del enemigo
Lección 2 de 25 del curso Juego de Unity: Defensa de torres de Coddy.
Un Runner se une al Grunt. Es más rápido y tiene menos salud, y todos los Runner comparten esos valores, así que pertenecen al tipo, no a un enemigo en particular. Estos valores están en el EnemyData proporcionado, un recurso ScriptableObject: el proyecto tiene GruntData (velocidad 2, salud 9) y RunnerData (velocidad 3.5, salud 5), y el Inspector asigna a cada enemigo el suyo en un campo data.
Cada enemigo lee los valores de su tipo a través de ese campo cada vez que los necesita:
void Start()
{
Debug.Log(name + " pays " + data.reward);
}La salud es diferente: un Grunt que recibió un golpe tiene menos salud que el Grunt que está detrás. Por eso, el recurso contiene maxHealth, y cada enemigo lo copia en uno de sus propios campos en Awake, que se ejecuta en cuanto se crea el objeto. Nunca cambies el recurso en sí: cambiarían todos los enemigos de ese tipo.
Desafío
FácilAsigna a cada enemigo las estadísticas de su tipo desde su recurso.
- En
Enemy, reemplazaspeedporpublic EnemyData data;y muévete adata.speed. - Añade
private int health;y asígnaledata.maxHealthenAwake.
Pulsa «Jugar»: el Runner adelanta al Grunt. Después, pulsa «Comprobar».
Pruébalo tú mismo
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++;
}
}
}
Todas las lecciones de Juego de Unity: Defensa de torres
Practica por tu cuenta: Playground de Unity