Hello there! So I'm tried to make a pathfinding for patrol and target, but path can't find the positon, how do fix this error?
local myHuman = script.Parent:WaitForChild("Humanoid") local myRoot = script.Parent:WaitForChild("HumanoidRootPart") local head = script.Parent:WaitForChild("Neck") local lowerTorso = script.Parent:WaitForChild("Torso") local clone = script.Parent:Clone() function findPath(target) local path = game:GetService("PathfindingService"):CreatePath() path:ComputeAsync(myRoot.Position,target.Position) local waypoints = path:GetWaypoints() if path.Status == Enum.PathStatus.Success then for _, waypoint in ipairs(waypoints) do myHuman:MoveTo(waypoint.Position) local timeOut = myHuman.MoveToFinished:Wait(1) if not timeOut then print("Path too long!") findPath(target) break end if checkSight(target) then repeat print("Moving directly to the target") myHuman:MoveTo(target.Position) attack(target) wait(0.1) if target == nil then break elseif target.Parent == nil then break end until checkSight(target) == false or myHuman.Health < 1 or target.Parent.Humanoid.Health < 1 break end if (myRoot.Position - waypoints[1].Position).magnitude > 20 then print("Target has moved, generating new path") findPath(target) break end end end end function checkSight(target) local ray = Ray.new(myRoot.Position, (target.Position - myRoot.Position).Unit * 40) local hit,position = workspace:FindPartOnRayWithIgnoreList(ray, {script.Parent}) if hit then if hit:IsDescendantOf(target.Parent) and math.abs(hit.Position.Y - myRoot.Position.Y) < 3 then print("I can see the target") return true end end return false end function findTarget() local dist = 50 local target = nil local potentialTargets = {} local seeTargets = {} for i,v in ipairs(workspace:GetChildren()) do local human = v:FindFirstChild("Humanoid") local torso = v:FindFirstChild("Torso") or v:FindFirstChild("HumanoidRootPart") if human and torso and v.Name ~= script.Parent.Name then if (myRoot.Position - torso.Position).magnitude < dist and human.Health > 0 then table.insert(potentialTargets,torso) end end end if #potentialTargets > 0 then for i,v in ipairs(potentialTargets) do if checkSight(v) then table.insert(seeTargets, v) elseif #seeTargets == 0 and (myRoot.Position - v.Position).magnitude < dist then target = v dist = (myRoot.Position - v.Position).magnitude end end end if #seeTargets > 0 then dist = 99999 for i,v in ipairs(seeTargets) do if (myRoot.Position - v.Position).magnitude < dist then target = v dist = (myRoot.Position - v.Position).magnitude end end end return target end function attack(target) if (myRoot.Position - target.Position).magnitude < 5 then if target.Parent ~= nil then target.Parent.Humanoid:TakeDamage(100) end wait(0.4) end end function died() wait(5) clone.Parent = workspace game:GetService("Debris"):AddItem(script.Parent,0.1) end myHuman.Died:Connect(died) lowerTorso.Touched:Connect(function(obj) if not obj.Parent:FindFirstChild("Humanoid") then myHuman.Jump = true end end) function main() local path = findPath() local target = findTarget() local Animation = script:WaitForChild("Animation") local Spotting = script:WaitForChild("Spotting") local humanoid = script.Parent:WaitForChild("Humanoid") local spot = humanoid:LoadAnimation(Spotting) local Running = humanoid:LoadAnimation(Animation) local song = workspace.ChasingTheme local chasing = 0 if path.Status == Enum.PathStatus.Success then for _, waypoint in pairs(path:GetWaypoints()) do if target then chasing = 1 myHuman.WalkSpeed = 0 if song.IsPlaying == false then song:Play() spot:Play() spot.Stopped:Wait() end myHuman.WalkSpeed = 12 findPath(target) Running:Play() else chasing = 0 myHuman.WalkSpeed = 3 song:Stop() main() end end end end while wait(0.1) do if myHuman.Health < 1 then break end main(workspace.destination) end
and error, "Workspace.InkRobloxian.AI:10: attempt to index nil with 'Position'", line 10
If I will try to remove position, then I'll get another error: Argument 2 missing or nil