Menu
CoddyTech

Punti di passaggio

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

In questo corso crei un gioco tower defense: i nemici percorrono un sentiero a ondate verso la tua base e le torri che costruisci accanto al sentiero li fermano. Ogni lezione aggiunge una funzionalità. Premi «Gioca» per provarla e «Verifica» per valutarla. Tutti e dodici gli script sono già presenti nel progetto; la maggior parte sono stub brevi che le lezioni successive completano, mentre EnemyData viene fornito per la lezione 2.

Il sentiero è composto da otto waypoint, da WP0, il punto di generazione, a WP7, la base, nell'array waypoints del Grunt. Il Grunt conserva l'indice del waypoint verso cui si dirige e si muove in quella direzione. Vector3.MoveTowards non oltrepassa mai il bersaglio, quindi il Grunt arriva esattamente sul waypoint e == può rilevare che è arrivato:

Vector3 target = waypoints[3].position;
transform.position = Vector3.MoveTowards(transform.position, target, 5f * Time.deltaTime);
if (transform.position == target)
{
    // arrivato: dirigiti verso il prossimo punto
}

Dopo l'ultimo waypoint, l'indice è uguale a waypoints.Length e leggere l'array in quella posizione genera un errore, quindi controlla l'indice prima di usarlo.

challenge icon

Sfida

Facile

Fai camminare il Grunt lungo il percorso, da un waypoint all'altro.

  1. In Enemy, aggiungi private int next = 1; (il Grunt inizia su WP0).
  2. In Update, restituisci il controllo quando next >= waypoints.Length.
  3. Muoviti verso waypoints[next].position con Vector3.MoveTowards a speed * Time.deltaTime; quando arriva, esegui next++.

Premi «Gioca»: il Grunt percorre ogni angolo e si ferma alla base. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed = 2f;
    public Transform[] waypoints;

    void Update()
    {
        // Percorri il tragitto qui: da un waypoint all'altro, in ordine.
    }
}

Tutte le lezioni di Gioco Unity: Tower Defense

Esercitati da solo: Playground Unity