Пройти по пути
Урок 2 из 18 курса Игра в Roblox: башенная защита на Coddy.
Враги идут по пути, отмеченному невидимыми деталями в workspace.Path.Waypoints, названными от 1 до 6. GetChildren не гарантирует порядок, поэтому сначала отсортируй их по числу в имени:
table.sort(waypoints, function(a, b)
return tonumber(a.Name) < tonumber(b.Name)
end)Каждый враг — это модель в ServerStorage.Enemies: клонируй её, помести над точкой пути 1 с помощью PivotTo и назначь ей родителя workspace.Enemies.
Humanoid передвигается с помощью MoveTo, а его событие MoveToFinished срабатывает по прибытии. Через 8 секунд он прекращает попытки и срабатывает со значением false, поэтому медленного врага на длинном участке отправляют снова, пока он не доберётся до места:
repeat
humanoid:MoveTo(waypoints[i].Position)
until humanoid.MoveToFinished:Wait()Передвижение занимает время, поэтому walkPath запускается в отдельном потоке с помощью task.spawn, а скрипт продолжает выполняться.
Задание
Легко- Получи
ServerStorageиlocal enemies = workspace.Enemies. - Помести путевые точки в список и отсортируй его по номеру.
- Напиши
walkPath(enemy): для путевых точек от 2-й до последней перемещай к ним с помощьюMoveTo, покаMoveToFinishedне сообщит, что враг прибыл. Остановись, если врага больше нет (not enemy.Parent). - Напиши
spawnEnemy(kind): клонируй модель, помести её на 5 студов выше путевой точки 1, назначь ейenemiesв качестве родителя, запустиwalkPathс помощьюtask.spawnи верни её. - Создай одного
"Zombie".
Нажми Play и смотри, как он идёт. Затем нажми Check.
Попробуйте сами
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
print("The base can take " .. Settings.BaseHealth .. " hits")
-- Каждый игрок получает Money в таблице лидеров
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local money = Instance.new("IntValue")
money.Name = "Money"
money.Value = Settings.StartMoney
money.Parent = leaderstats
end)
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.