repeat wait() until workspace:FindFirstChild("Ball") -- Constants local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") -- Marker local Marker = Instance.new("Part") Marker.Name = "Marker" Marker.Size = Vector3.new(2, 2, 2) Marker.Shape = Enum.PartType.Ball Marker.BrickColor = BrickColor.new("Bright violet") Marker.CanCollide = false Marker.Anchored = true Marker.Parent = workspace Marker.Transparency = 1 Marker.Material = Enum.Material.Neon -- Physics local function PHYSICS_STUFF(velocity, position) local acceleration = -workspace.Gravity local timeToLand = (-velocity.y - math.sqrt(velocity.y * velocity.y - 4 * 0.5 * acceleration * position.y)) / (2 * 0.5 * acceleration) local horizontalVelocity = Vector3.new(velocity.x, 0, velocity.z) local landingPosition = position + horizontalVelocity * timeToLand + Vector3.new(0, -position.y, 0) return landingPosition end -- Construct RunService:BindToRenderStep("VisualizeLandingPosition", Enum.RenderPriority.Camera.Value, function() Marker.Transparency = 0.5 for _, ballModel in ipairs(workspace:GetChildren()) do if ballModel:IsA("Model") and ballModel.Name == "Ball" then local ball = ballModel:FindFirstChild("BallPart") if ball then local initialVelocity = ballModel.Velocity local landingPosition = PHYSICS_STUFF(initialVelocity.Value, ball.Position) Marker.CFrame = CFrame.new(landingPosition) end end end end)