Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How can I make my zombie chasing script more effective?

Hello, I tried making a script that makes a zombie npc follow the closest player to it and automatically update which player to follow. This is what I currently have (the script is inside of the zombie npc):

local PFS=game:GetService("PathfindingService")
local Zomb=script.Parent
local HRP=Zomb:WaitForChild("HumanoidRootPart")
local Humanoid=Zomb:WaitForChild("Humanoid")
local ClosestChar=nil
local ClosestDist=10000

--Find Closest Player
local function findClosestChar()
	ClosestChar=nil
	ClosestDist=10000
	for i,v in pairs(game.Players:GetChildren()) do
		if v.Character and v.Character.HumanoidRootPart then
			local PlayerHRP=v.Character.HumanoidRootPart
			if ClosestChar==nil or (PlayerHRP.Position-HRP.Position).magnitude<ClosestDist then
				ClosestChar=v.Character
				ClosestDist=(PlayerHRP.Position-HRP.Position).magnitude
			end
		end
	end
	if ClosestChar then
		return ClosestChar.HumanoidRootPart.Position
	end
end

--Go To Position
local function GoTo(End)
	local Path=PFS:CreatePath()
	Path:ComputeAsync(HRP.Position,End)
	local wayPoints=Path:getWaypoints()
	for i=1,5 do
		if wayPoints[i] then
			if wayPoints[i].Action==Enum.PathWaypointAction.Jump  then
				Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
			end
			Humanoid:MoveTo(wayPoints[i].Position)
			Humanoid.MoveToFinished:Wait(2)
		end
	end
end

while true do
	if findClosestChar() then
		GoTo(findClosestChar())
	else wait()
	end
end

The script works, however, the zombie will stutter on his way to his destination and I want him to walk smoothly the entire way there. I'm mainly looking to fix my 2nd function (GoTo), but I'm open to any suggestions on any part.

1 comment

0

If anyone else has the same problem as me, the answer below only worked sometimes, I watched some more videos and they reccomend to use ray casting to detect once the zombie has a direct line to its target instead of using pathfinding service and this worked

1 answer

✓ Accepted answer

Humanoid.MoveToFinished:Wait(2)

Remove this line

This discussion is preserved as it was. New answers, comments, and votes are closed.