Menu
CoddyTech

Пройти по пути

Урок 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, а скрипт продолжает выполняться.

challenge icon

Задание

Легко
  1. Получи ServerStorage и local enemies = workspace.Enemies.
  2. Помести путевые точки в список и отсортируй его по номеру.
  3. Напиши walkPath(enemy): для путевых точек от 2-й до последней перемещай к ним с помощью MoveTo, пока MoveToFinished не сообщит, что враг прибыл. Остановись, если врага больше нет (not enemy.Parent).
  4. Напиши spawnEnemy(kind): клонируй модель, помести её на 5 студов выше путевой точки 1, назначь ей enemies в качестве родителя, запусти walkPath с помощью task.spawn и верни её.
  5. Создай одного "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)
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Игра в Roblox: башенная защита