Puntos de ruta
Lección 1 de 25 del curso Juego de Unity: Defensa de torres de Coddy.
En este curso crearás un juego de defensa de torres: los enemigos recorren un camino en oleadas hacia tu base, y las torres que construyes junto al camino los detienen. Cada lección añade una característica. Pulsa «Jugar» para probarlo y «Comprobar» para que se evalúe. Los doce scripts están en el proyecto desde el principio; la mayoría son esqueletos breves que se completan en lecciones posteriores, y EnemyData se proporciona para la lección 2.
El camino consta de ocho puntos de referencia, desde WP0, en el punto de aparición, hasta WP7, en la base, dentro del arreglo waypoints del Grunt. El Grunt conserva el índice del punto al que se dirige y avanza hacia él. Vector3.MoveTowards nunca sobrepasa su objetivo, así que el Grunt llega exactamente al punto de referencia y == permite saber que ha llegado:
Vector3 target = waypoints[3].position;
transform.position = Vector3.MoveTowards(transform.position, target, 5f * Time.deltaTime);
if (transform.position == target)
{
// llegó: dirigirse al siguiente
}Después del último punto de referencia, el índice es igual a waypoints.Length, y leer el arreglo en esa posición produce un error, así que comprueba el índice antes de usarlo.
Desafío
FácilHaz que el Grunt recorra el camino, de un punto de referencia al siguiente.
- En
Enemy, añadeprivate int next = 1;(el Grunt empieza en WP0). - En
Update, devuelve el control cuandonext >= waypoints.Length. - Muévete hacia
waypoints[next].positionconVector3.MoveTowardsaspeed * Time.deltaTime; cuando llegue,next++.
Pulsa «Jugar»: el Grunt recorre cada esquina y se detiene en la base. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed = 2f;
public Transform[] waypoints;
void Update()
{
// Recorre el camino aquí: de un punto de ruta a otro, en orden.
}
}
Todas las lecciones de Juego de Unity: Defensa de torres
Practica por tu cuenta: Playground de Unity