local owner = game.Players.LocalPlayer repeat wait() until owner.Character local character = owner.Character local runService = game:GetService("RunService") local fakeParts = {} -- create fake parts for each body part, slightly bigger for _, part in pairs(character:GetChildren()) do if part:IsA("BasePart") then local fakePart = Instance.new("Part") fakePart.Size = part.Size + Vector3.new(0.05, 0.05, 0.05) fakePart.Parent = workspace fakePart.CanCollide = false fakePart.Massless = true fakePart.Name = "altrrxfakebody" fakeParts[part] = fakePart end end -- function to find the nearest non-body part local function getNearestPart(realPart) local closest, closestDist = nil, math.huge for _, v in pairs(workspace:GetDescendants()) do if v:IsA("BasePart") and v ~= realPart and v.Name ~= "altrrxfakebody" and not fakeParts[v] then local distance = (realPart.Position - v.Position).Magnitude if distance < closestDist then closestDist = distance closest = v end end end return closest end -- sync fake parts, change color, and handle transparency runService.RenderStepped:Connect(function() for realPart, fakePart in pairs(fakeParts) do if realPart and fakePart then fakePart.CFrame = realPart.CFrame -- check what it's touching local hitPart = nil local touchingSomething = false for _, obj in pairs(realPart:GetTouchingParts()) do if obj and obj:IsA("BasePart") and obj.Name ~= "altrrxfakebody" and not fakeParts[obj] then hitPart = obj touchingSomething = true break end end -- if touching nothing, use nearest part color but stay invisible if hitPart then fakePart.Color = hitPart.Color fakePart.Transparency = 0 else local nearest = getNearestPart(realPart) fakePart.Color = nearest and nearest.Color or realPart.Color fakePart.Transparency = 1 end end end end)