Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

Why does this pathfinding function make the NPC stop working? [SOLVED]

Asked by
drew1017 330 Moderation Voter
9 years ago
local function FollowPath(masterpath, coord)
    for i, v in pairs(coord) do
        Droid.Humanoid:MoveTo(v)
        local distance
        repeat wait()
            distance = (v - Droid.Head.Position).magnitude
            print(distance)
        until distance < 2
    end
end

This works as expected, with the droid repeatedly moving to each of the coordinates and moving back to it if it's moved off course. However, if it's not near the path for ~8 seconds, it just stops moving and will only start following the path again if I manually push it back to where it was before.

Is there a way to prevent this, or at least have a function that tells it to move back to the path again if it stops moving?

EDIT: The whole script by request of europe EDIT2: Solved by KoreanBBQ

Droid = script.Parent.Parent
PFS = game:GetService('PathfindingService')
    PFS.EmptyCutoff = 0
Debris = game:GetService('Debris')

local function FollowPath(masterpath, coord)
    for i, v in pairs(coord) do
        Droid.Humanoid:MoveTo(v)
        local distance
        repeat wait()
            distance = (v - Droid.Head.Position).magnitude
            print(distance)
        until distance < 2
    end
end

masterpath = PFS:ComputeSmoothPathAsync(Droid.Head.Position, Droid.Head.PathTarget.Position, 512)
coord = masterpath:GetPointCoordinates()
for i, v in pairs(coord) do
    local Part = Instance.new('Part', Droid.Head)
    Part.CFrame=CFrame.new(v)
    Part.Transparency = 0
    Part.Color = Color3.new(0.2, 0, 1)
    Part.Size = Vector3.new(1, 1, 1)
    Part.Anchored = true
    Part.CanCollide = false
    Part.Locked = true
    Part.Name = 'Path'
    Part.Material = Enum.Material.Neon
end

spawn(function() FollowPath(masterpath, coord) end)

1 answer

Log in to vote
0
Answered by
KoreanBBQ 301 Moderation Voter
9 years ago

Already answered, but put Droid.Humanoid:MoveTo(v) in the repeat loop so it regives order to move

Ad

Answer this question