Roblox · Tower Defense · урок 1

Карта и маршрут врагов

Tower Defense: враги идут волнами по маршруту, игрок ставит башни и не пускает их до конца пути. Сегодня: карта, дорога, точки поворота и первый враг, который проходит маршрут.

Структура

Синим — что добавляем на этом уроке.

Workspace
├─ Grass (Part) — земля карты
├─ Road (Folder) — парты дороги-лабиринта
├─ SpawnPart (Part) — старт: CanCollide выкл., полупрозрачный
├─ Waypoints (Folder)
│  ├─ 1 (Part) — первый поворот
│  ├─ 2 (Part) — второй поворот
│  ├─ …
│  └─ N (Part) — конец пути
└─ Rig (Model) — враг на старте
ServerScriptService
└─ MovingScript (Script)

Шаги

  1. Новое место из шаблона. Поставь рядом персонажа — по нему видно масштаб.
  2. Земля Grass, дорога из партов → папка Road. Все парты карты: Anchored вкл.
  3. Точки 1, 2, 3… — в каждом углу дороги и в конце: Anchored вкл., CanCollide выкл., полупрозрачные, имена — только цифры по порядку.
  4. Между соседними точками не больше ~100 studs: MoveTo сдаётся через 8 секунд, и враг срежет угол.
  5. Враг: Rig из Avatar → Rig Builder (или своя модель с Humanoid). Ни одна его часть не Anchored, иначе он не пойдёт.

Скрипты

MovingScript

Где: ServerScriptService · Script
Зачем: Ведёт врага Rig от точки к точке по номерам.

-- враг на карте
local enemy = workspace:FindFirstChild("Rig")
-- папка с точками поворота
local waypoints = workspace:FindFirstChild("Waypoints")

-- идём по точкам 1, 2, 3…
for waypoint = 1, #waypoints:GetChildren() do
    -- отправляем врага к точке с этим номером
    enemy.Humanoid:MoveTo(waypoints[waypoint].Position)
    -- ждём, пока дойдёт
    enemy.Humanoid.MoveToFinished:Wait()
-- следующая точка
end

Проверка

Запусти Play (или Run) и убедись: