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?