I am trying to make a pathfinding zombie, but it doesn't handle jumps very well. The new FindPathAsync I know for sure can do jumps, but I can't figure out how to use it, so I'm using getRawPathASync.
Heres a link to a photo: https://totallypalehideout.tumblr.com/image/174606148248
And heres my code:
wait(3)
local pathfindService = game:GetService("PathfindingService")
local PlayerService = game:GetService("Players")
local localCharacter = script.Parent
local start = localCharacter.Torso
local PointModel = Instance.new("Model")
PointModel.Parent = game.Workspace
PointModel.Name = "Points"
pointModel = game.Workspace.Points
local function FindClosestPlayer(inRange)
local playerDistance, closestPlayer = inRange
for _, player in pairs(PlayerService:GetPlayers()) do
local character = player.Character
local blip = character:FindFirstChild("HumanoidRootPart")
if blip and character.Parent and character ~= localCharacter then
local blipDist = (start.Position - blip.Position).Magnitude
if blipDist <= inRange and blipDist < playerDistance then
playerDistance, closestPlayer = blipDist, player
end
end
end
return closestPlayer, playerDistance
end
while true do
chosenPlayer = FindClosestPlayer(10000)
if chosenPlayer then
if chosenPlayer.Character.Humanoid.Health ~= 0 then
local path = pathfindService:ComputeRawPathAsync(start.Position, chosenPlayer.Character.LowerTorso.Position, 10000)
local points = path:GetPointCoordinates()
if points[6] then
part = Instance.new("Part")
part.FormFactor = Enum.FormFactor.Custom
part.Size = Vector3.new(1, 1, 1)
part.Transparency = 1
part.Position = points[6]
part.Anchored = true
part.CanCollide = false
part.Parent = pointModel
elseif points[5] then
part = Instance.new("Part")
part.FormFactor = Enum.FormFactor.Custom
part.Size = Vector3.new(1, 1, 1)
part.Transparency = 1
part.Position = points[5]
part.Anchored = true
part.CanCollide = false
part.Parent = pointModel
elseif points[4] then
part = Instance.new("Part")
part.FormFactor = Enum.FormFactor.Custom
part.Size = Vector3.new(1, 1, 1)
part.Transparency = 1
part.Position = points[4]
part.Anchored = true
part.CanCollide = false
part.Parent = pointModel
elseif points[3] then
part = Instance.new("Part")
part.FormFactor = Enum.FormFactor.Custom
part.Size = Vector3.new(1, 1, 1)
part.Transparency = 1
part.Position = points[3]
part.Anchored = true
part.CanCollide = false
part.Parent = pointModel
elseif points[2] then
part = Instance.new("Part")
part.FormFactor = Enum.FormFactor.Custom
part.Size = Vector3.new(1, 1, 1)
part.Transparency = 1
part.Position = points[2]
part.Anchored = true
part.CanCollide = false
part.Parent = pointModel
elseif points[1] then
part = Instance.new("Part")
part.FormFactor = Enum.FormFactor.Custom
part.Size = Vector3.new(1, 1, 1)
part.Transparency = 1
part.Position = points[1]
part.Anchored = true
part.CanCollide = false
part.Parent = pointModel
end
if part then
script.Parent.Humanoid:MoveTo(part.Position)
script.Parent.Humanoid.MoveToFinished:Wait()
end
pointModel:ClearAllChildren()
end
end
end
