I need some help, Im trying to make a system for my tower defense game were it would get the nearest enemy to a waypoint but in the raduis of the tower, here is my code for it
function findNearestWaypoint(pos)
local Workspacelistofitems = game.Workspace.Map.WayPoints:GetChildren()
local waypoint = nil
local dist = math.huge
local temp = nil
local temp2 = nil
for x = 1, #Workspacelistofitems do
temp2 = Workspacelistofitems[x]
if (temp2.className == "Part") and (temp2 ~= script.Parent) and game.Workspace.Map.WayPoints:FindFirstChild(tonumber(tostring(temp2)) + 1) then
temp = game.Workspace.Map.WayPoints[tonumber(tostring(temp2)) + 1]
if (temp ~= nil) then
if (temp.Position - pos).magnitude < dist then
waypoint = temp
dist = (temp.Position - pos).magnitude
end
end
elseif (temp2.className == "Part") and (temp2 ~= script.Parent) then
temp = temp2
if (temp ~= nil) then
if (temp.Position - pos).magnitude < dist then
waypoint = temp
dist = (temp.Position - pos).magnitude
end
end
end
end
return waypoint
end
function findNearestTorso(pos)
local Workspacelistofitems = game.Workspace.Zombies:GetChildren()
local torso = nil
local temp = nil
local dist = script.Parent.StatsFolder.Range.Value
local human = nil
local temp2 = nil
for x = 1, #Workspacelistofitems do
temp2 = Workspacelistofitems[x]
if (temp2.className == "Model") and (temp2 ~= script.Parent) then
temp = temp2:findFirstChild("HumanoidRootPart")
human = temp2:findFirstChild("Humanoid")
if (temp ~= nil) and (human ~= nil) and (human.Health > 0) then
if (temp.Position - script.Parent.HumanoidRootPart.Position).magnitude < dist then
print(math.floor(dist + 0.5).." "..x.." "..math.floor((temp.Position - script.Parent.HumanoidRootPart.Position).magnitude + 0.5))
torso = temp
dist = (temp.Position - pos).magnitude
end
end
end
end
return torso
end