I'm trying to make a smart NPC system in which enemies will try to move around the character, so what I've done is made them move randomly in front of my character, however, they all seem to act as if I'm using Model:MoveTo instead of Humanoid:MoveTo
TravelTarget = function(npc,dist,rot)
local target = npc.Data.Target.Value
local h = npc.Humanoid
local nc = CFrame.new(
npc.HumanoidRootPart.CFrame.Position,
target.CFrame.Position
)
local rc = nc - nc.Position
local x,y,z = rc:toOrientation()
npc.HumanoidRootPart.CFrame = nc * CFrame.Angles(-x,0,-z)
rot = math.random(unpack(rot)) or math.random(-90,90)
local location = (
(target.CFrame * CFrame.Angles(0,math.rad(rot),0)) * CFrame.new(0,0,-dist)
)
h:MoveTo(location.Position)
wait(0.2)
h:MoveTo(npc.HumanoidRootPart.CFrame.Position)
h.MoveToFinished:Wait()
end
Visualization: https://gyazo.com/6e345fa5c606d1fca808860db1c6e6c6
I can confirm that the issue isn't ping or server lag as well.

3 comments
I can't see the gif.
It looks like you have too many NPCs trying to go to the same spot, so either increase their radius, if you're using the pathfinding service, or have them go to a spot near but not directly on top of each other.
It still happens when I have one NPC. No PFS by the way.