Hi people, I am trying to make an NPC that will chase you if you are in its range, the problem with this is that it gets stuck several times when chasing the player.
local Pathfinding = game:GetService("PathfindingService")
local NPCTorso = script.Parent.Torso
local Humanoid = script.Parent.Humanoid
function Follow()
local path = Pathfinding:CreatePath(
{ AgentCanJump = true,
AgentCanClimb = true
}
)
local distance= 50
local waypoints
for i, v in pairs(game.Workspace:GetChildren()) do
local Hum = v:FindFirstChild("Humanoid")
local Torso = v:FindFirstChild("Torso")
if Hum and Torso and v ~= script.Parent and not v:FindFirstChildOfClass("IntValue") then
if (NPCTorso.Position - Torso.Position).Magnitude <= distancia then
Ruta = path:ComputeAsync(NPCTorso.Position, Torso.Position)
local points = path:GetWaypoints()
for i, part in pairs(points) do
if part.Action == Enum.PathWaypointAction.Jump then
Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
Humanoid:MoveTo(part.Position)
Humanoid.MoveToFinished:Wait()
end
end
end
end
end
while task.wait(0.5) do
Follow()
end
local Pathfinding = game:GetService("PathfindingService")
local NPCTorso = script.Parent.Torso
local Humanoid = script.Parent.Humanoid
function Follow()
local path = Pathfinding:CreatePath(
{ AgentCanJump = true,
AgentCanClimb = true
}
)
local distance= 50
local waypoints
for i, v in pairs(game.Workspace:GetChildren()) do
local Hum = v:FindFirstChild("Humanoid")
local Torso = v:FindFirstChild("Torso")
if Hum and Torso and v ~= script.Parent and not v:FindFirstChildOfClass("IntValue") then
if (NPCTorso.Position - Torso.Position).Magnitude <= distancia then
Ruta = path:ComputeAsync(NPCTorso.Position, Torso.Position)
local points = path:GetWaypoints()
for i, part in pairs(points) do
if part.Action == Enum.PathWaypointAction.Jump then
Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
Humanoid:MoveTo(part.Position)
end
end
end
end
end
while wait() do
Follow()
end