Punkty trasy
Lekcja 1 z 25 w kursie Gra w Unity: Obrona wieży w Coddy.
W tym kursie tworzysz grę typu tower defense: wrogowie idą ścieżką falami w stronę twojej bazy, a zbudowane przy niej wieże ich zatrzymują. W każdej lekcji dodajesz jedną funkcję. Naciśnij „Graj”, aby wypróbować grę, i „Sprawdź”, aby ocenić kod. Wszystkie dwanaście skryptów znajduje się w projekcie od początku; większość to krótkie szkielety, które zostaną uzupełnione w kolejnych lekcjach, a EnemyData jest dostępny na potrzeby lekcji 2.
Ścieżka składa się z ośmiu punktów orientacyjnych: od WP0 przy miejscu pojawiania się wrogów do WP7 przy bazie, w tablicy waypoints Grunta. Grunt przechowuje indeks punktu, do którego zmierza, i porusza się w jego stronę. Vector3.MoveTowards nigdy nie przesuwa obiektu poza cel, więc Grunt zatrzymuje się dokładnie w punkcie orientacyjnym, a operator == może wykryć, że dotarł na miejsce:
Vector3 target = waypoints[3].position;
transform.position = Vector3.MoveTowards(transform.position, target, 5f * Time.deltaTime);
if (transform.position == target)
{
// dotarł do celu: skieruj się do następnego punktu
}Po ostatnim punkcie orientacyjnym indeks jest równy waypoints.Length, a odczytanie w tym miejscu elementu tablicy powoduje błąd, dlatego sprawdź indeks, zanim go użyjesz.
Wyzwanie
ŁatwySpraw, aby Grunt przeszedł ścieżkę, od punktu nawigacyjnego do punktu nawigacyjnego.
- W
Enemydodajprivate int next = 1;(Grunt zaczyna w WP0). - W
Updatezwróć sterowanie, gdynext >= waypoints.Length. - Poruszaj się w kierunku
waypoints[next].positionza pomocąVector3.MoveTowardsz prędkościąspeed * Time.deltaTime; gdy dotrze na miejsce, wykonajnext++.
Naciśnij „Graj”: Grunt przejdzie przez każdy zakręt i zatrzyma się przy bazie. Następnie kliknij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed = 2f;
public Transform[] waypoints;
void Update()
{
// Przemieszczaj się tutaj po trasie: od punktu do punktu, po kolei.
}
}
Wszystkie lekcje w sekcji Gra w Unity: Obrona wieży
Poćwicz samodzielnie: Edytor online Unity