I am working on NPCs to walk around my map in game, but after one iteration through the script they seem to stop for 0.5 seconds after each step. What could be causing this, and how could I fix it? Here is my script below:

Script:

local PathfindingService = game:GetService("PathfindingService")
-- Variables for the zombie, its humanoid, and destination
local zombie = script.Parent
local humanoid = zombie:WaitForChild("Humanoid")
local destinations = game.Workspace.Destinations:GetChildren()

-- Endless Loop
 while true do
	-- Create the path object
	for destination = 1,#destinations do
		local path = PathfindingService:CreatePath()
		local destination2 = destinations[destination]
	 
	-- Compute the path
		path:ComputeAsync(zombie.HumanoidRootPart.Position, destination2.Position)
	 
	-- Get the path waypoints
		local waypoints = path:GetWaypoints()
	-- Loop through waypoints
		for _, waypoint in pairs(waypoints) do
			--local part = Instance.new("Part")
			--part.Shape = "Ball"
			--part.Material = "Neon"
			--part.Size = Vector3.new(0.6, 0.6, 0.6)
			--part.Position = waypoint.Position
			--part.Anchored = true
			--part.CanCollide = false
			--part.Parent = game.Workspace
		 
			-- Move zombie to the next waypoint
			humanoid:MoveTo(waypoint.Position)
			-- Wait until zombie has reached the waypoint before continuing
			humanoid.MoveToFinished:Wait()
		end
	end
	wait(4) --Wait at final destination before repeating loop
end

2 comments

0

Does anyone know what the problem could be?

0

Maybe put a wait(.1) in the while loop.