This may be a big ask but can some one look at this code and tell me why the npc is just walking into the wall even tho he generates the path and I tell him to move along the waypoints.
--Services
local PathFinding = game:GetService("PathfindingService")
local RunService = game:GetService("RunService")
--Variables
local info = script.Parent
local owner = info:WaitForChild("Owner").Value
local character = script.Parent.Parent.Parent
local charRoot = character.HumanoidRootPart
local followRoot = script.Parent.Parent:WaitForChild("HumanoidRootPart")
local followHumanoid = script.Parent.Parent:WaitForChild("Humanoid")
followRoot.CFrame = charRoot.CFrame + charRoot.CFrame.LookVector * -2
function checkSight()
local ray = Ray.new(followRoot.Position, (charRoot.Position - followRoot.Position).Unit * 360)
local hit,position = workspace:FindPartOnRayWithIgnoreList(ray, {script.Parent.Parent})
if hit then
if math.abs(hit.Position.Y - followRoot.Position.Y) < 5 and math.abs(hit.Position.Y - followRoot.Position.Y) < 3 then
print("I can see the followRoot")
return true
end
end
return false
end
function createPart(positon)
local part = Instance.new("Part")
part.Parent = game.Workspace
part.Size = Vector3.new(1,1,1)
part.Shape = "Ball"
part.Anchored = true
part.CanCollide = false
part.Position = positon
part.Material = "Neon"
game:GetService("Debris"):AddItem(part,5)
end
function moveToWaypoints(path)
local waypoints = path:GetWaypoints()
for _,waypoint in pairs(waypoints) do
print("Next Waypoint")
createPart(waypoint.Position)
if waypoint.Action == Enum.PathWaypointAction.Jump then
followHumanoid.Jump = true
end
followHumanoid:MoveTo(waypoint.Position)
end
end
function generatePath()
--print("Generating Path")
local path = PathFinding:CreatePath()
path:ComputeAsync(followRoot.Position,charRoot.Position)
if path.Status == Enum.PathStatus.Success then
return path
end
end
function main()
repeat
followHumanoid:MoveTo(charRoot.Position)
RunService.Stepped:Wait(0.1)
until not checkSight()
local path = generatePath()
if path ~= nil then
moveToWaypoints(path)
end
end
while RunService.Stepped:Wait(0.1) do
main()
end
