Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Asigna a cada enemigo las estadísticas de su tipo desde su recurso.

  1. En Enemy, reemplaza speed por public EnemyData data; y muévete a data.speed.
  2. Añade private int health; y asígnale data.maxHealth en Awake.

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