I created a script where any models tagged with "Monsters" using the collection service will follow the player if in the desired distance. My problem is that when I test it, the monster always prioritizes the oldest player over the new one. For example, the monster is following player 2 but then when in the range of player 1, it immediately switches target and heads towards player 1. I thought of using deBounce but it's not helping. Any suggestions or ideas that can help me? Please and thank you.

local chasing = false

-----------FUNCTIONS
local runService = game:GetService("RunService")
runService.Stepped:Connect(function()
	local players = game.Players:GetPlayers()
	for i = 1, #players do
		repeat wait() until players[i].Character ~= nil
		local humroot = players[i].Character.HumanoidRootPart
		
		local monsters = collectionService:GetTagged("Monster")
			
		for i = 1, #monsters do
			local root = monsters[i].PrimaryPart
			local distance = (humroot.Position - root.Position).Magnitude
			if distance < 20 and not chasing then
				chasing = true
				local cFrameX = humroot.CFrame.X
				local cFrameZ = humroot.CFrame.Z
				local goal = {}
				goal.CFrame = CFrame.new(cFrameX, root.CFrame.Y, cFrameZ)
				root.CFrame = CFrame.new(root.Position, humroot.Position)
				local tweenService = game:GetService("TweenService")
				local tween = tweenService:Create(root, TweenInfo.new(distance * .2), goal)
				tween:Play()
			else
				chasing = false
			end
		end
	end
end)