so i was making some walking npc’s and noticed that they just randomly stops following the parts, im using MoveTo
while wait() do
script.Parent:MoveTo(game.Workspace.TestNpc.Part1.Position)
script.Parent.MoveToFinished:Wait()
script.Parent:MoveTo(game.Workspace.TestNpc.Part2.Position)
script.Parent.MoveToFinished:Wait()
script.Parent:MoveTo(game.Workspace.TestNpc.Part3.Position)
script.Parent.MoveToFinished:Wait()
script.Parent:MoveTo(game.Workspace.TestNpc.Part4.Position)
script.Parent.MoveToFinished:Wait()
script.Parent:MoveTo(game.Workspace.TestNpc.Part5.Position)
script.Parent.MoveToFinished:Wait()
end
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)