Hello I made a minimap but it's not perfect when I have overlapping bricks.
How my minimap works is it goes through workspace's children, creates a frame of proportional size and puts it on the GUI. rotation, positionning, everything is fine.
Now when I have overlapping bricks, since ZIndex is scaled on 10, I cant just make it proportional to Position.Y+.5*Size.Y
So I made it so after it's positionned everything, it loops through all the parts(part A), and for every single part, loop through all parts and checks with every possible part(part B) if there is a collision on the minimap.
If it does find a collision, it sets Part A's ZIndex to B's+1
But it's REALLY not working correctly.
Look at the Collision section of the code:
for _,image in pairs(imagedParts) do
for ind,gui in pairs(imagedParts) do
local collision=false
if gui~=image and gui.Position.Y.Scale<image.Position.Y.Scale+image.Size.Y.Scale and
gui.Position.Y.Scale>image.Position.Y.Scale-(image.Size.Y.Scale/2) and
gui.Position.X.Scale<image.Position.X.Scale+image.Size.X.Scale and
gui.Position.X.Scale+gui.Size.X.Scale>image.Position.X.Scale then
--Downward edge collide
collision=true
end
if gui~=image and gui.Position.Y.Scale+gui.Size.Y.Scale>image.Position.Y.Scale and
gui.Position.Y.Scale+gui.Size.Y.Scale<image.Position.Y.Scale+(image.Size.Y.Scale/2) and
gui.Position.X.Scale<image.Position.X.Scale+image.Size.X.Scale and
gui.Position.X.Scale+gui.Size.X.Scale>image.Position.X.Scale then
-- Upward edge collide
collision=true
end
if gui~=image and gui.Position.X.Scale+gui.Size.X.Scale>image.Position.X.Scale and
gui.Position.X.Scale+gui.Size.X.Scale<image.Position.X.Scale-(image.Size.X.Scale/2) and
gui.Position.Y.Scale<image.Position.Y.Scale+image.Size.Y.Scale and
gui.Position.Y.Scale+gui.Size.Y.Scale>image.Position.Y.Scale then
-- Left edge collide
collision=true
end
if gui~=image and gui.Position.X.Scale<image.Position.X.Scale+image.Size.X.Scale and
gui.Position.X.Scale>image.Position.X.Scale+(image.Size.X.Scale/2) and
gui.Position.Y.Scale<image.Position.Y.Scale+image.Size.Y.Scale and
gui.Position.Y.Scale+gui.Size.Y.Scale>image.Position.Y.Scale then
-- Right edge collide
collision=true
end
if collision then --WHERE THE TROUBLE STARTS
local topY=original[image].Position.Y+0.5*original[image].Size.Y
local guiY=original[gui].Position.Y+0.5*original[gui].Size.Y
if guiY>topY then
image.ZIndex=gui.ZIndex-1
elseif guiY<topY then
image.ZIndex=gui.ZIndex+1
end
end
end
end
Sorry if code's long but you can pretty much start looking at it where i say the trouble starts.
this is really difficult thank you ill make my minimap free

1 comment
Would it work to just not use index, and arrange the GUIs in a table and putting them in in order of height or wtv?