Menu
CoddyTech

Контрольные точки

Урок 1 из 25 курса Игра на Unity: Tower Defense на Coddy.

В этом курсе ты создашь игру в жанре «защита башни»: враги волнами идут по пути к твоей базе, а башни, которые ты строишь вдоль пути, останавливают их. В каждом уроке добавляется одна функция. Нажми «Играть», чтобы попробовать игру, и «Проверить», чтобы проверить решение. Все двенадцать скриптов есть в проекте с самого начала; большинство из них — короткие заготовки, которые заполняются в последующих уроках, а EnemyData предоставляется для урока 2.

Путь состоит из восьми контрольных точек: WP0 находится у места появления врагов, а WP7 — у базы; они хранятся в массиве waypoints объекта Grunt. Grunt хранит индекс точки, к которой направляется, и движется к ней. Vector3.MoveTowards никогда не перемещается дальше цели, поэтому Grunt точно останавливается в контрольной точке, и == позволяет определить, что он прибыл:

Vector3 target = waypoints[3].position;
transform.position = Vector3.MoveTowards(transform.position, target, 5f * Time.deltaTime);
if (transform.position == target)
{
    // прибыли: направляемся к следующей точке
}

После последней контрольной точки индекс становится равен waypoints.Length, и чтение массива по этому индексу вызовет ошибку, поэтому проверь индекс, прежде чем использовать его.

challenge icon

Задание

Легко

Заставь Grunt пройти по пути от одной контрольной точки к другой.

  1. В Enemy добавь private int next = 1; (Grunt начинает на WP0).
  2. В Update выполни возврат, когда next >= waypoints.Length.
  3. Перемещайся к waypoints[next].position с помощью Vector3.MoveTowards со скоростью speed * Time.deltaTime; когда объект доберётся до точки, выполни next++.

Нажми «Играть»: Grunt пройдёт через каждый поворот и остановится у базы. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

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

    void Update()
    {
        // Здесь пройди по маршруту: от одной путевой точки к другой, по порядку.
    }
}

Все уроки раздела Игра на Unity: Tower Defense

Потренируйтесь самостоятельно: Песочница Unity