Hello, I've been working on my NPC for abit now and i've managed to find a few threads on pathfinding about using a repeat wait loop in order to make the npc to transition smoothly between each parts instead of being jittery.
Here is my code:
--/// Variables
local Target
local PathfindingService = game:GetService("PathfindingService")
local NPC = script.Parent
local Humanoid = NPC.Humanoid
local RootPart = NPC.HumanoidRootPart
--Temporary!!!
game.Players.Changed:Connect(function()
--/// Random plr Target
if #game.Players:GetPlayers() >=2 then
local rndTarget = workspace:FindFirstChild(game.Players:GetPlayers()[math.random(#game.Players:GetPlayers())])
game.Players:GetPlayers()[rndTarget].CharacterAdded:wait()
Target = rndTarget.Character:WaitForChild("HumanoidRootPart")
else
game.Players:GetPlayers()[1].CharacterAdded:wait()
Target = game.Players:GetPlayers()[1].Character:WaitForChild("HumanoidRootPart")
end
----
end)
----
-- Main
while true do wait()
local Start = RootPart.Position
local Goal = Vector3.new(Target.Position.X -7,Target.Position.Y, Target.Position.Z)
local Path = PathfindingService:FindPathAsync(Start, Goal) -- Makes a path from the starting Point (RootPoint) to the Goal (Target)
if Path.Status == Enum.PathStatus.Success then -- Makes sure that the path is valid
local Waypoints = Path:GetWaypoints() -- gathers all the points
for i, Waypoint in pairs(Waypoints) do -- for each point do
Humanoid:MoveTo(Waypoint.Position) -- Moves to each individual point
if Waypoint.Action == Enum.PathWaypointAction.Jump then -- Jumping Phase
Humanoid.Jump = true
end
repeat wait()
Distance = (Start - Waypoint.Position).magnitude
until Distance < 3
end
end
end
My NPC moves 2-3 studs then stops completely. And the script essentially breaks. Is that what the until part of it does?

2 comments
The until is ment to stop the body once it is 3 studs away from its target.
How would i make it so it then moves onto the next loop smoothly then?