Basically what I'm doing is having the npc chase the closest player, it works fine, however the movements are super choppy and it just looks very bad, anyone know why this is?
--Services
local players = game:GetService("Players")
local ps = game:GetService("PathfindingService")
local runserv = game:GetService("RunService")
--Asset Variables
local staff = script.Parent
local staffHum = staff.Humanoid
local staffHRP = staff.HumanoidRootPart
--Find Destination(The Closest Player)
local function findClosestPlayer()
local closestPlayer
local closestMag = 50
for _, player in pairs(players:GetPlayers()) do
if player.Character then
local playerHRP = player.Character:FindFirstChild("HumanoidRootPart")
if playerHRP then
local mag = (staffHRP.Position - playerHRP.Position).Magnitude
if mag < closestMag then
closestPlayer = player.Character
closestMag = mag
end
end
end
end
if closestPlayer then
return closestPlayer
end
end
local function chaseClosestPlayer()
--Pathfinding
local dest = findClosestPlayer()
local path = ps:CreatePath()
if dest ~= nil then
path:ComputeAsync(staffHRP.Position, dest.PrimaryPart.Position)
local waypoints = path:GetWaypoints()
for _, waypoint in pairs(waypoints) do
staffHum:MoveTo(waypoint.Position)
staffHum.MoveToFinished:Wait()
end
end
end
runserv.Heartbeat:Connect(chaseClosestPlayer)

1 comment
Well, I don't think mine is a solution but I'd suggest you to not updating the WayPoints everytime. It causes lag.