Menu
CoddyTech

Punti di passaggio

Lezione 1 di 18 del corso Gioco Unity: difesa della torre di Coddy.

In questo corso costruirai un gioco tower defense. I nemici avanzano lungo un percorso a ondate verso la tua base, e tu li fermi con torri che piazzi sulle piazzole di costruzione, poi potenzi e vendi. Ogni lezione aggiunge una funzionalità. Tutti e dodici gli script del gioco sono presenti nel progetto fin dall'inizio; la maggior parte sono brevi scheletri che le lezioni successive completeranno.

Un nemico segue il percorso attraverso i punti di passaggio: GameObject vuoti agli angoli, disposti in un array nell'ordine in cui vengono attraversati. Il nemico conserva l'indice del punto di passaggio verso cui è diretto, si muove verso di esso e, quando lo raggiunge, prosegue verso il successivo. Vector3.MoveTowards(current, target, maxStep) sposta un punto verso un obiettivo al massimo di maxStep e non lo supera mai, così il nemico arriva esattamente sul punto di passaggio e == può rilevare che è arrivato. Questo drone di pattuglia vola tra le sue postazioni e ricomincia dopo l'ultima:

public Transform[] posts;
public float speed = 3f;
private int current;

void Update()
{
    Vector3 goal = posts[current].position;
    transform.position = Vector3.MoveTowards(transform.position, goal, speed * Time.deltaTime);
    if (transform.position == goal)
    {
        current = (current + 1) % posts.Length;
    }
}

Un nemico non ripete il percorso: dopo l'ultimo punto di passaggio non ha più una destinazione. Quando l'indice raggiunge Length, non indica più un punto di passaggio e leggere waypoints[waypoints.Length] genera un'eccezione IndexOutOfRangeException, quindi l'indice viene controllato prima di essere usato. I punti di passaggio si trovano 0.6 sopra il terreno, all'altezza del centro di un nemico, così camminare dritto verso di essi mantiene i suoi piedi a terra.

challenge icon

Sfida

Facile

Il Grunt si trova sul primo waypoint, WP0, e il suo script Enemy ha già gli otto waypoint in waypoints, da WP0 allo spawn a WP7 alla base.

  1. Aggiungi un int privato next: l’indice del waypoint verso cui si dirige il Grunt. Inizia da WP0, quindi next parte da 1.
  2. In Update, sposta il Grunt verso waypoints[next] a speed unità al secondo con Vector3.MoveTowards.
  3. Quando raggiunge quel waypoint, dirigiti verso quello successivo.
  4. Dopo l’ultimo waypoint, fermati: niente altri movimenti e nessun errore.

Premi Play e osserva il Grunt percorrere il tragitto, poi fai clic su Check.

Provalo tu

using UnityEngine;

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

    void Update()
    {
        // Percorri il percorso qui: da un punto di passaggio all'altro, nell'ordine.
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Gioco Unity: difesa della torre