Making a tower defense game and for the life of me cannot figure out how to change the target. I know what I got to do (switch to the next target in the table over and over until you can find a target) but I have no clue how to do it. I have tried myself before and had no success from no changes to the tower outright not working.
local tower = script.Parent
local config = tower.Config
function playAni(ani)
local Animation = tower.Animation:FindFirstChild(ani)
tower.AnimationController.Animator:LoadAnimation(Animation):Play()
end
playAni("Idle")
local enabled = false
local tower = script.Parent
local config = tower.Config
while true do
wait()
if enabled == false then
enabled = true
local stun = false
local target
local EnemyList = {}
for _,v in pairs(workspace.Map.EnemyList:GetChildren()) do
if v:FindFirstChild("CurrentPoint") then
EnemyList[#EnemyList + 1] = {Obj = v.CurrentPoint; Value = v.CurrentPoint.Value}
table.sort(EnemyList, function(a, b)
return a.Value > b.Value
end)
target = EnemyList[1]
local targetOBJ = target.Obj
local targetVAL = target.Value
if targetOBJ.Parent ~= nil then
local unit = targetOBJ.Parent.Zombie.Value
local dist = (unit.Root.Position - tower.Root.Position).magnitude
if dist < config.Range.Value and stun == false then
if unit:FindFirstChild("Hidden").Value == false or unit:FindFirstChild("Hidden").Value == true and config.Hidden.Value == true then
tower:SetPrimaryPartCFrame(CFrame.lookAt(tower.Root.Position, unit.Root.Position))
tower.FireSound:Play()
playAni("Fire")
unit:FindFirstChild("Health").Value = unit:FindFirstChild("Health").Value - config.Damage.Value
unit = targetOBJ.Parent.Zombie.Value
wait(config.Firerate.Value / 10)
end
end
end
end
end
enabled = false
end
end
