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