So I have this minimap, which DOES work, but when I go too far, the frame of the part goes past the minimap itself! How do I fix this and not have the frame spawn if it goes too far past that distance? P.S. the mini map is a circle decal
local player = game:GetService("Players").LocalPlayer
local character = player.Character or player.CharacterAdded:wait()
local torso = character:WaitForChild("HumanoidRootPart")
local head = character:WaitForChild("Head")
local main = script.Parent.Main --Frame to contain Everything
local map = main.Map --Image label to create a circular GUI for the minimap
local mapParts = game.Workspace.MiniMup
local content = game:GetService("ContentProvider")
local arrow = "rbxassetid://1940322272"
content:Preload(arrow)
function createFrame(part)
map:ClearAllChildren()
local torsoPos = CFrame.new(torso.CFrame.p)
local position = torsoPos:toObjectSpace(part.CFrame)
local relPos = CFrame.new(-position.X + (map.Size.X.Offset/2), 0, -position.Z + (map.Size.Y.Offset/2))
local object = Instance.new("Frame", map)
object.Name = part.Name
object.BackgroundColor3 = part.Color
object.BorderSizePixel = 0.1
object.Size = UDim2.new(0, (part.Size.X) + 5, 0, (part.Size.Z) + 5)
object.Position = UDim2.new(0, (relPos.X) - (object.Size.X.Offset)/2, 0, (relPos.Z) - (object.Size.Y.Offset)/2)
map.Rotation = math.deg(math.atan2(head.CFrame.lookVector.X, head.CFrame.lookVector.Z))
end
function createPlayerFrame(part)
local torsoPos = CFrame.new(torso.CFrame.p)
local enemyTorsoPos = torsoPos:toObjectSpace(part.CFrame)
local relativePos = CFrame.new(-enemyTorsoPos.X + (map.Size.X.Offset/2), 0, -enemyTorsoPos.Z + (map.Size.Y.Offset/2))
local enemyPlayer = Instance.new("Frame", map)
enemyPlayer.BackgroundColor3 = Color3.new(1,1,1)
enemyPlayer.Size = UDim2.new(0, 7.5, 0, 7.5)
enemyPlayer.Name = part.Name
enemyPlayer.BorderSizePixel = 0
enemyPlayer.Position = UDim2.new(0, (relativePos.X) - (enemyPlayer.Size.X.Offset)/2, 0, (relativePos.Z) - (enemyPlayer.Size.Y.Offset)/2)
end
function buildMap()
local playerPos = Instance.new("ImageLabel", main)
playerPos.BackgroundTransparency = 1
playerPos.Name = "Player"
playerPos.Image = arrow
playerPos.Size = UDim2.new(0,15,0,15)
playerPos.Position = UDim2.new(0, 92.5, 0, 92.5)
for i,v in ipairs(mapParts:GetChildren()) do
if v:IsA("Model") then
for a,b in ipairs(v:GetChildren()) do
if #v:GetChildren() > 10 then
elseif b:IsA("Part") or b:IsA("UnionOperation") or b:IsA("MeshPart") then
createFrame(b)
end
end
elseif v:IsA("Part") or v:IsA("UnionOperation") or v:IsA("MeshPart") then
createFrame(v)
end
end
--Part that triggers the createPlayFrame function!
for c, d in ipairs(game.Workspace:GetChildren()) do
if d:FindFirstChild("Humanoid") and d:IsA("Model") and d.Name ~= player.Name then
local enemyTorso = d:FindFirstChild("HumanoidRootPart")
createPlayerFrame(enemyTorso)
end
end
end
while wait(1/25) do
buildMap()
end

2 comments
There is a property of frames called ClipsDescandants, try that out
ClipsDescendant doesn't work on rotated guis