Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Spraw, aby Grunt przeszedł ścieżkę, od punktu nawigacyjnego do punktu nawigacyjnego.

  1. W Enemy dodaj private int next = 1; (Grunt zaczyna w WP0).
  2. W Update zwróć sterowanie, gdy next >= waypoints.Length.
  3. Poruszaj się w kierunku waypoints[next].position za pomocą Vector3.MoveTowards z prędkością speed * Time.deltaTime; gdy dotrze na miejsce, wykonaj next++.

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