Percorra o Caminho
Lição 3 de 22 do curso Jogo de Roblox: Defesa de Torres da Coddy.
Um Humanoid anda com MoveTo, e seu evento MoveToFinished é acionado quando ele chega. Ele desiste após 8 segundos e é acionado com false, então um inimigo lento em um trecho longo recebe o comando novamente até chegar lá:
repeat
humanoid:MoveTo(points[4].Position)
until humanoid.MoveToFinished:Wait()Percorrer todo o caminho leva tempo, então walkPath é executada em sua própria thread com task.spawn(walkPath, enemy), e spawnEnemy continua e retorna.
Desafio
FácilFaça o Zumbi percorrer o caminho.
- Escreva
walkPath(enemy): parai = 2, #waypoints, repitaenemy.Humanoid:MoveTo(waypoints[i].Position)até queMoveToFinished:Wait()informe que ele chegou ounot enemy.Parent; retorne se o inimigo tiver desaparecido. - Em
spawnEnemy, antes dereturn enemy, adicionetask.spawn(walkPath, enemy).
Pressione “Jogar”: o Zumbi percorre o caminho até a base azul. Depois, clique em “Verificar”.
Experimente você mesmo
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
local enemies = workspace.Enemies
print("The base can take " .. Settings.BaseHealth .. " hits")
-- Os waypoints, em ordem (eles têm os nomes 1, 2, 3...)
local waypoints = workspace.Path.Waypoints:GetChildren()
table.sort(waypoints, function(a, b)
return tonumber(a.Name) < tonumber(b.Name)
end)
-- Cada jogador recebe Money no placar de líderes
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)
-- Lição 3: Caminhar pelo caminho vai aqui
-- Um novo inimigo no portão, percorrendo o caminho
local function spawnEnemy(kind)
local enemy = ServerStorage.Enemies[kind]:Clone()
-- posicionado logo acima do primeiro waypoint
enemy:PivotTo(waypoints[1].CFrame + Vector3.new(0, 5, 0))
enemy.Parent = enemies
return enemy
end
-- Um inimigo, por enquanto
spawnEnemy("Zombie")
Todas as lições de Jogo de Roblox: Defesa de Torres
Pratique por conta própria: Playground de Roblox