So I've made a zombie path finding script that works but not very well (The zombies moving stutters a lot) I know there is a way better way to make this and I was wondering how that would be done.
here is my code:
wait(5) -- Just giving time for the character to load in and also give me time for testing
local PFS = game:GetService("PathfindingService")
local marker = game.Workspace.PathfindingMarker
local Zomhum = script.Parent.Humanoid
local ZomhumRoot = script.Parent.HumanoidRootPart
local players = game.Workspace.Players:GetChildren() -- i have another script that moves all the characters into a folder in the workspace
local target = nil
local targetLastPos = nil
local currentTarget = nil
local closestTarget = math.huge
local chosenTarget = nil
for i, player in pairs(players) do
local playerDistance = (player.HumanoidRootPart.Position - ZomhumRoot.Position).magnitude
currentTarget = playerDistance
if currentTarget <= closestTarget then
closestTarget = currentTarget
chosenTarget = player
elseif currentTarget > closestTarget then
print("")
end
end
local function ComputePath()
local path = PFS:CreatePath()
path:ComputeAsync(ZomhumRoot.Position, chosenTarget.HumanoidRootPart.Position)
local waypoints = path:GetWaypoints()
local x = 0
local targetPrevPos = chosenTarget.HumanoidRootPart.Position
for i, waypoint in pairs(waypoints) do
x=x+1
Zomhum:MoveTo(waypoint.Position)
Zomhum.MoveToFinished:Wait()
if chosenTarget.HumanoidRootPart.Position ~= targetPrevPos and x >= 3 then -- im using the x >=3 to try and make the movement a bit smoother
x = 0
ComputePath()
end
end
end
ComputePath()
