I’m trying to get a union to look at an enemy for my project, but it looks for a while before stopping. I have no idea why, no errors or anything.
Code:
local towerModule = require(game.ServerScriptService.TowerModule)
local tower = towerModule.Towers[script.Parent.Parent.Name]
local currentUpgradeNo = 0
local currentUpgrade = tower["Upgrade " .. tostring(currentUpgradeNo)]
local range = (currentUpgrade["Range"])
local overlapParams = OverlapParams.new()
overlapParams.FilterDescendantsInstances = game.Workspace.Enemies:GetChildren()
overlapParams.FilterType = Enum.RaycastFilterType.Whitelist
local orderOfEnemies = {}
game:GetService("RunService").Heartbeat:Connect(function()
local enemyHum
for i, v in ipairs(orderOfEnemies) do
table.remove(orderOfEnemies, i)
end
local enemies = game.Workspace:GetPartBoundsInRadius(script.Parent.Position, range/2, overlapParams)
print(enemies)
for i, v in ipairs(enemies) do
table.insert(orderOfEnemies, v)
end
if #orderOfEnemies > 0 then
enemyHum = orderOfEnemies[1].Parent:WaitForChild("Humanoid")
local enemyTorso = enemyHum.Parent:WaitForChild("Torso")
repeat
if enemyHum == nil then
break
end
enemyHum.Health-=(currentUpgrade["DPH"])
script.Parent.CFrame = (CFrame.lookAt(script.Parent.Position, Vector3.new(enemyTorso.Position.X, script.Parent.Position.Y, enemyTorso.Position.Y)))
task.wait(currentUpgrade["SBH"])
until (game.Workspace:GetPartBoundsInRadius(script.Parent.Position, range, overlapParams))[1] ~= orderOfEnemies[1] or enemyHum == nil
else
return
end
end)
Am I doing anything wrong?