-- Idk use this and modify :D local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local tool = Instance.new("Tool") tool.Name = "Fly" tool.RequiresHandle = false tool.Parent = player.Backpack local flightPart local active = false local function createPlatform() flightPart = Instance.new("Part") flightPart.Size = Vector3.new(2, 0.5, 2) flightPart.Anchored = true flightPart.CanCollide = true flightPart.Material = Enum.Material.SmoothPlastic flightPart.Color = Color3.fromRGB(100, 100, 255) flightPart.Name = "FlightPlatform" flightPart.Position = Vector3.new(0, -100, 0) flightPart.Parent = workspace end local function removePlatform() if flightPart then flightPart:Destroy() flightPart = nil end end tool.Activated:Connect(function() if active then removePlatform() active = false else createPlatform() active = true end end) RunService.RenderStepped:Connect(function() if not active or not flightPart then return end local char = player.Character if not char then return end local hrp = char:FindFirstChild("HumanoidRootPart") local humanoid = char:FindFirstChildWhichIsA("Humanoid") if not hrp or not humanoid then return end local isJumping = humanoid:GetState() == Enum.HumanoidStateType.Jumping local targetY = hrp.Position.Y - hrp.Size.Y / 2 - 0.5 local currentY = flightPart.Position.Y local newY = currentY if isJumping then newY = targetY -- snap up when jumping else newY = currentY + (targetY - currentY) * 0.05 -- descend slowly end flightPart.Position = Vector3.new(hrp.Position.X, newY, hrp.Position.Z) end) player.CharacterAdded:Connect(function() removePlatform() tool:Destroy() active = false end)