How To Detect if Guis are overlapping

I’ve seen many other posts like this, they solve my problem a little. But they all have issues.
This is my current script, it works but only with 4x4 Gui’s, otherwise it just acts as a 4x4 hitbox when its not.
Also it allows you to clip in certain directions.
I made this from mashing some code together, anyone have a reliable GUI overlapping thing?

player:GetPropertyChangedSignal("Position"):Connect(function() -- checks for pos changing
	local hitbox = gui.hitbox
	local pos1, size1 = player.AbsolutePosition, player.AbsoluteSize;
	local pos2, size2 = hitbox.AbsolutePosition, hitbox.AbsoluteSize;

	local top = (pos1.Y) - (pos2.Y)
	local bottom = (pos1.Y) - (pos2.Y)
	local left = (pos1.X) - (pos2.X)
	local right =(pos1.X) - (pos2.X)
	local touching = false

	if top < (size1.Y) and bottom < (size1.Y) and left < (size1.X) and right < (size1.X) then
		player.Position = oldPosition
		touching=true
		player.dbug2.Text = "attempt to walk into wall"
		wait(2)
		player.dbug2.Text = "erroroutput: N/A"
	end

	return touching
end)

(PS: all the other gui overlapping things have the same issues.)