So I have this zombie that is supposed to path find to the closest player. It works perfectly without one thing, the zombie will only update the path when he reaches his target position. https://gyazo.com/bdd1ce536fbe8d157c816b32d1a5b212
--Zombie
local torso = script.Parent.Torso
local targ = nil
local db = false
local pathService = game:GetService("PathfindingService")
local zombieDamage = 50
local zombieWait = 1
function getClose()
local ptorso = game.Players:GetChildren()
local ptab = {}
for i = 1, #ptorso do
table.insert(ptab, i, (torso.Position-ptorso[i].Character.Torso.Position).magnitude)
end
table.sort(ptab)
for i = 1, #ptorso do
if (torso.Position-ptorso[i].Character.Torso.Position).magnitude == ptab[1] then
targ = ptorso[i]
end
end
end
function pathfind()
local path = pathService:ComputeRawPathAsync(torso.Position, targ.Character.Torso.Position, 512)
local points = path:GetPointCoordinates()
for _,v in pairs(points) do
local part = Instance.new("Part")
part.Size = Vector3.new(1,1,1)
part.Anchored = true
part.CanCollide = false
part.Position = v
part.Parent = workspace
game:GetService("Debris"):AddItem(part,0.1)
wait()
end
for _,point in pairs (points) do
torso.Parent.Humanoid:MoveTo(point)
while (torso.Position - point).magnitude > 4 do
wait(0.1)
end
end
end
torso.Parent.Humanoid.Died:connect(function()
wait(0.5)
torso.Parent:Destroy()
end)
function attack()
if db == false then
db = true
local human = targ.Character:FindFirstChild("Humanoid")
if human ~= nil and human.Health > 0 then
human:TakeDamage(zombieDamage)
wait(zombieWait)
db = false
end
end
end
while wait() do
getClose()
pathfind() --here the problem is located I think? Do I have to use coroutines and if so, how?
if (torso.Position-targ.Character.Torso.Position).magnitude < 3 then
attack()
end
end
