Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Faça o Zumbi percorrer o caminho.

  1. Escreva walkPath(enemy): para i = 2, #waypoints, repita enemy.Humanoid:MoveTo(waypoints[i].Position) até que MoveToFinished:Wait() informe que ele chegou ou not enemy.Parent; retorne se o inimigo tiver desaparecido.
  2. Em spawnEnemy, antes de return enemy, adicione task.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