So I'm making a zombie game, and these zombies use pathfinding to not run into walls, I've never used pathfinding before so I helped myself with a youtube tutorial, and the pathfinding actually worked decently, problem is, when the zombie has high walkspeed, it glitches, like this:

(It's a gif) https://gyazo.com/cfd6fd7e9b350809dd352f2ed6cac2e9

This is the pathfinding script, correct me if something is wrong with it, as I still don't get the hang of pathfinding perfectly:

--- Services ---

local Plrs = game:GetService("Players")
local RunS = game:GetService("RunService")
local PathfindingS = game:GetService("PathfindingService")

--- Variables ---

local char = script.Parent.Parent
local Hum = char.Humanoid
local HRP = char.HumanoidRootPart

local CanJump = false

local FOV = 50
local CharSize = char:GetExtentsSize()

local PathInfo = {
	ModelRadius = (CharSize.X + CharSize.Z)/4,
	ModelHeight = CharSize.Y,
	ModelCanJump = CanJump
}

--- Initialization --- 

HRP:SetNetworkOwner(nil)

--- Functions ---

local function FindClosestPlr()
	local players = {}
	local ClosestDistance = math.huge
	local target
	
	for index, targetplr in pairs(Plrs:GetPlayers()) do
		local TargetChar = targetplr.Character
		
		if TargetChar == nil then
			continue
		end
		
		local distance = (TargetChar.HumanoidRootPart.Position - HRP.Position)
		if distance.Magnitude <= FOV then
			table.insert(players, {
				Magnitude = distance.Magnitude,
				Player = targetplr
			})
		end
	end
	
	for i, entry in pairs(players) do
		local magnitude = entry.Magnitude
		local player = entry.Player
		
		if magnitude < ClosestDistance then
			ClosestDistance = magnitude
			target = player
		end
	end
	
	return target
end


function Chase()
	local plr = FindClosestPlr()
	
	if plr == nil then
		return
	end
	
	local plr_character = plr.Character or plr.CharacterAdded:Wait()
	
	local plr_humanoid = plr_character.Humanoid
	
	if plr_humanoid.Health <= 0 then
		return
	end
	
	-- Chase
	
	local plr_HRP = plr_character.HumanoidRootPart
	
	local destination = plr_HRP.Position
	local beginning = HRP.Position
	
	local path = PathfindingS:CreatePath(PathInfo)
	path:ComputeAsync(beginning, destination)
	
	if path.Status == Enum.PathStatus.Success then
		local waypoints = path:GetWaypoints()
		
		for cry, waypoint in pairs(waypoints) do
			if waypoints.Action == Enum.PathWaypointAction.Jump then
				Hum.Jump = true
			end
			
			Hum:MoveTo(waypoint.Position)
			Hum.MoveToFinished:Wait()
		end
		
	else
		Hum:MoveTo(HRP.Position)
	end
	
end

--- Connections ---

RunS.Heartbeat:Connect(Chase)

Keep in mind both zombies are exaclty the same, just one has different part colors, and has 26 walkspeed, instead of 12.