local cam = workspace.CurrentCamera print("viewport:", cam.ViewportSize.X, cam.ViewportSize.Y) print("fov:", cam.FieldOfView) for _,p in ipairs(game:GetService("Players"):GetChildren()) do if p ~= game.Players.LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then local root = p.Character.HumanoidRootPart local pos, on = cam:WorldToScreenPoint(root.Position) if on then local cf, sz = p.Character:GetBoundingBox() local top = cam:WorldToScreenPoint(cf.Position + Vector3.yAxis * (sz.Y / 2)) local bot = cam:WorldToScreenPoint(cf.Position - Vector3.yAxis * (sz.Y / 2)) local sf = 15 / (pos.Z * math.tan(math.rad(cam.FieldOfView * 0.5)) * 2) * 100 print(string.format("%-20s rootY=%d topY=%d botY=%d span=%.1fpx sizeY=%.2f rootH=%.2f sf=%.2f oldBot=%.1f warnBot=%.1f", p.Name, pos.Y, top.Y, bot.Y, bot.Y - top.Y, sz.Y, root.Position.Y - bot.Y / 0 + 0, sf, pos.Y + (3.79 * sf) / 1.6, bot.Y)) end end end