
KeylessUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Debris = game:GetService("Debris")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
if playerGui:FindFirstChild("FlyUI") then
playerGui.FlyUI:Destroy()
end
local speeds = {55, 95, 145}
local stage = 0
local flying = false
local flyConn
local bv, bg
local ikList = {}
local poseParts = {}
local windBits = {}
local lookPart, lookAtt, lookIK
local windSound
local windLevel = 0
local windShowing = false
local function getParts()
local char = player.Character or player.CharacterAdded:Wait()
return char, char:WaitForChild("HumanoidRootPart"), char:WaitForChild("Humanoid")
end
local function resetNeck(char)
local upper = char and char:FindFirstChild("UpperTorso")
local neck = upper and upper:FindFirstChild("Neck")
local waist = upper and upper:FindFirstChild("Waist")
if neck then neck.Transform = CFrame.identity end
if waist then waist.Transform = CFrame.identity end
end
local function clearLook()
if lookIK then lookIK:Destroy() lookIK = nil end
if lookPart then lookPart:Destroy() lookPart = nil end
lookAtt = nil
end
local function clearWind()
for _, obj in ipairs(windBits) do
if obj then obj:Destroy() end
end
windBits = {}
if windSound then
windSound:Stop()
windSound:Destroy()
windSound = nil
end
windShowing = false
end
local function clearPose()
for _, ik in ipairs(ikList) do
if ik then ik:Destroy() end
end
ikList = {}
for _, part in ipairs(poseParts) do
if part then part:Destroy() end
end
poseParts = {}
clearLook()
resetNeck(player.Character)
end
local function makeTarget(parent, offset)
local part = Instance.new("Part")
part.Name = "InvisibleFlyTarget"
part.Size = Vector3.new(0.15, 0.15, 0.15)
part.Transparency = 1
part.CanCollide = false
part.CanTouch = false
part.CanQuery = false
part.Anchored = false
part.Massless = true
part.Parent = parent
local weld = Instance.new("Weld")
weld.Part0 = parent
weld.Part1 = part
weld.C0 = CFrame.new(offset)
weld.Parent = part
local attachment = Instance.new("Attachment")
attachment.Parent = part
table.insert(poseParts, part)
return attachment
end
local function addIK(hum, endPart, rootPart, target, pole)
if not endPart or not rootPart or not target then return end
local ik = Instance.new("IKControl")
ik.Type = Enum.IKControlType.Position
ik.EndEffector = endPart
ik.ChainRoot = rootPart
ik.Target = target
if pole then ik.Pole = pole end
ik.Weight = 1
ik.SmoothTime = 0.05
ik.Parent = hum
table.insert(ikList, ik)
end
local function startLookUp(char, hum)
clearLook()
local head = char:FindFirstChild("Head")
if not head then return end
lookPart = Instance.new("Part")
lookPart.Name = "HeadLookTarget"
lookPart.Size = Vector3.new(0.2, 0.2, 0.2)
lookPart.Transparency = 1
lookPart.Anchored = true
lookPart.CanCollide = false
lookPart.CanQuery = false
lookPart.Parent = workspace
lookAtt = Instance.new("Attachment")
lookAtt.Parent = lookPart
lookIK = Instance.new("IKControl")
lookIK.Type = Enum.IKControlType.LookAt
lookIK.EndEffector = head
lookIK.ChainRoot = head
lookIK.Target = lookAtt
lookIK.Weight = 1
lookIK.SmoothTime = 0.05
lookIK.Parent = hum
end
local function lockTorso(char)
local upper = char:FindFirstChild("UpperTorso")
local lower = char:FindFirstChild("LowerTorso")
local waist = upper and upper:FindFirstChild("Waist")
local root = lower and lower:FindFirstChild("Root")
if waist then waist.Transform = CFrame.identity end
if root then root.Transform = CFrame.identity end
end
local function applyHoverPose(char, hum)
clearPose()
local hrp = char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
addIK(hum, char:FindFirstChild("LeftHand"), char:FindFirstChild("LeftUpperArm"), makeTarget(hrp, Vector3.new(0.35, 0.55, -0.55)))
addIK(hum, char:FindFirstChild("RightHand"), char:FindFirstChild("RightUpperArm"), makeTarget(hrp, Vector3.new(-0.35, 0.35, -0.55)))
addIK(hum, char:FindFirstChild("LeftFoot"), char:FindFirstChild("LeftUpperLeg"), makeTarget(hrp, Vector3.new(-0.55, -2.35, 0.45)))
addIK(hum, char:FindFirstChild("RightFoot"), char:FindFirstChild("RightUpperLeg"), makeTarget(hrp, Vector3.new(0.55, -2.35, 0.45)))
end
local function applyFlightPose(char, hum)
clearPose()
local hrp = char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local leftHand = makeTarget(hrp, Vector3.new(-1.15, 2.8, 0.05))
local rightHand = makeTarget(hrp, Vector3.new(1.15, 2.8, 0.05))
local leftFoot = makeTarget(hrp, Vector3.new(-0.28, -2.85, 0.05))
local rightFoot = makeTarget(hrp, Vector3.new(0.28, -2.85, 0.05))
local leftPole = makeTarget(hrp, Vector3.new(-0.28, -1.2, 0.35))
local rightPole = makeTarget(hrp, Vector3.new(0.28, -1.2, 0.35))
addIK(hum, char:FindFirstChild("LeftHand"), char:FindFirstChild("LeftUpperArm"), leftHand)
addIK(hum, char:FindFirstChild("RightHand"), char:FindFirstChild("RightUpperArm"), rightHand)
addIK(hum, char:FindFirstChild("LeftFoot"), char:FindFirstChild("LeftUpperLeg"), leftFoot, leftPole)
addIK(hum, char:FindFirstChild("RightFoot"), char:FindFirstChild("RightUpperLeg"), rightFoot, rightPole)
startLookUp(char, hum)
end
local function addWindLine(hrp, startOffset, length, thickness)
local a0 = Instance.new("Attachment")
a0.Position = startOffset
a0.Parent = hrp
local a1 = Instance.new("Attachment")
a1.Position = startOffset + Vector3.new(0, -length, 0)
a1.Parent = hrp
local beam = Instance.new("Beam")
beam.Attachment0 = a0
beam.Attachment1 = a1
beam.Width0 = thickness
beam.Width1 = 0.02
beam.Color = ColorSequence.new(Color3.fromRGB(190, 195, 205))
beam.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0.2),
NumberSequenceKeypoint.new(1, 1)
})
beam.FaceCamera = true
beam.LightEmission = 0.25
beam.Parent = hrp
table.insert(windBits, a0)
table.insert(windBits, a1)
table.insert(windBits, beam)
end
local function setWind(hrp, level)
clearWind()
windLevel = level
if level <= 0 or not hrp then return end
local lines = {
{Vector3.new(-0.9, 0.2, 0.15), 3.4, 0.07},
{Vector3.new(0.9, 0.2, 0.15), 3.6, 0.07},
{Vector3.new(-1.4, -0.4, 0.1), 3.2, 0.06},
{Vector3.new(1.4, -0.4, 0.1), 3.2, 0.06},
{Vector3.new(0, -0.8, 0.2), 3.8, 0.06},
{Vector3.new(-0.4, 0.8, 0.05), 2.8, 0.05},
{Vector3.new(0.4, 0.8, 0.05), 2.8, 0.05},
}
if level == 2 then
table.insert(lines, {Vector3.new(-1.8, 0.6, 0.1), 4.8, 0.06})
table.insert(lines, {Vector3.new(1.8, 0.6, 0.1), 4.8, 0.06})
table.insert(lines, {Vector3.new(-2.2, -0.2, 0.05), 5.2, 0.05})
table.insert(lines, {Vector3.new(2.2, -0.2, 0.05), 5.2, 0.05})
table.insert(lines, {Vector3.new(0, 1.4, 0.05), 4.4, 0.05})
table.insert(lines, {Vector3.new(-0.7, -1.6, 0.15), 4.6, 0.05})
table.insert(lines, {Vector3.new(0.7, -1.6, 0.15), 4.6, 0.05})
table.insert(lines, {Vector3.new(-1.2, 1.3, 0.08), 4.2, 0.05})
table.insert(lines, {Vector3.new(1.2, 1.3, 0.08), 4.2, 0.05})
table.insert(lines, {Vector3.new(0, -2.1, 0.12), 5.0, 0.05})
end
for _, info in ipairs(lines) do
addWindLine(hrp, info[1], info[2], info[3])
end
windSound = Instance.new("Sound")
if level == 1 then
windSound.SoundId = "rbxassetid://463114572"
windSound.Volume = 1
windSound.PlaybackSpeed = 1
else
windSound.SoundId = "rbxassetid://9120769456"
windSound.Volume = 1.6
windSound.PlaybackSpeed = 1
end
windSound.Looped = true
windSound.Parent = hrp
windSound:Play()
table.insert(windBits, windSound)
windShowing = true
end
local function footRing(hrp)
local ring = Instance.new("Part")
ring.Name = "BoostRing"
ring.Shape = Enum.PartType.Cylinder
ring.Size = Vector3.new(0.12, 2, 2)
ring.Anchored = true
ring.CanCollide = false
ring.CanQuery = false
ring.Material = Enum.Material.Neon
ring.Color = Color3.fromRGB(190, 198, 210)
ring.Transparency = 0.25
ring.CFrame = CFrame.new(hrp.Position - Vector3.new(0, 2.6, 0)) * CFrame.Angles(0, 0, math.rad(90))
ring.Parent = workspace
local start = tick()
local conn
conn = RunService.Heartbeat:Connect(function()
local t = (tick() - start) / 0.35
if t >= 1 or not ring.Parent then
conn:Disconnect()
if ring then ring:Destroy() end
return
end
local s = 2 + t * 16
ring.Size = Vector3.new(0.1, s, s)
ring.Transparency = 0.25 + t * 0.75
end)
Debris:AddItem(ring, 0.4)
end
local gui = Instance.new("ScreenGui")
gui.Name = "FlyUI"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = playerGui
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.28, 0, 0.12, 0)
btn.Position = UDim2.new(0.68, 0, 0.78, 0)
btn.BackgroundColor3 = Color3.fromRGB(30, 140, 220)
btn.Text = "VOAR"
btn.TextColor3 = Color3.new(1, 1, 1)
btn.TextScaled = true
btn.Font = Enum.Font.GothamBold
btn.Parent = gui
Instance.new("UICorner", btn).CornerRadius = UDim.new(0.2, 0)
local function stopFly()
flying = false
stage = 0
windLevel = 0
btn.Text = "VOAR"
btn.BackgroundColor3 = Color3.fromRGB(30, 140, 220)
if flyConn then flyConn:Disconnect() flyConn = nil end
if bv then bv:Destroy() bv = nil end
if bg then bg:Destroy() bg = nil end
clearPose()
clearWind()
local char = player.Character
if char then
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then
hum.PlatformStand = false
hum.AutoRotate = true
end
end
end
local function startFly()
flying = true
stage = 1
btn.Text = "BOOST 1"
btn.BackgroundColor3 = Color3.fromRGB(40, 120, 210)
local char, hrp, hum = getParts()
hum.PlatformStand = true
hum.AutoRotate = false
bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(1e6, 1e6, 1e6)
bv.Velocity = Vector3.zero
bv.Parent = hrp
bg = Instance.new("BodyGyro")
bg.MaxTorque = Vector3.new(1e6, 1e6, 1e6)
bg.P = 20000
bg.D = 1500
bg.Parent = hrp
local hovering = false
local flightPose = false
flyConn = RunService.RenderStepped:Connect(function()
if not hrp.Parent then
stopFly()
return
end
local camCF = workspace.CurrentCamera.CFrame
local move = hum.MoveDirection
local moving = move.Magnitude > 0.05
local speed = speeds[stage] or 55
if moving then
if windLevel > 0 and not windShowing then
setWind(hrp, windLevel)
end
lockTorso(char)
local flatLook = Vector3.new(camCF.LookVector.X, 0, camCF.LookVector.Z)
local flatRight = Vector3.new(camCF.RightVector.X, 0, camCF.RightVector.Z)
if flatLook.Magnitude > 0.01 then flatLook = flatLook.Unit end
if flatRight.Magnitude > 0.01 then flatRight = flatRight.Unit end
local flyDir = (camCF.LookVector * move:Dot(flatLook)) + (camCF.RightVector * move:Dot(flatRight))
if flyDir.Magnitude > 0.01 then
flyDir = flyDir.Unit
bv.Velocity = flyDir * speed
bg.CFrame = CFrame.lookAt(hrp.Position, hrp.Position + flyDir) * CFrame.Angles(math.rad(-75), 0, 0)
if lookPart then
lookPart.Position = hrp.Position + flyDir * 4 + Vector3.new(0, 3, 0)
end
end
if hovering then
clearPose()
hovering = false
end
if not flightPose then
applyFlightPose(char, hum)
flightPose = true
end
else
bv.Velocity = Vector3.zero
bg.CFrame = camCF
if windShowing then
local saved = windLevel
clearWind()
windLevel = saved
end
if flightPose then
clearPose()
flightPose = false
end
if not hovering then
applyHoverPose(char, hum)
hovering = true
end
end
end)
end
btn.MouseButton1Click:Connect(function()
if stage == 0 then
startFly()
elseif stage == 1 then
stage = 2
btn.Text = "BOOST 2"
btn.BackgroundColor3 = Color3.fromRGB(80, 90, 220)
local _, hrp = getParts()
setWind(hrp, 1)
elseif stage == 2 then
stage = 3
btn.Text = "PARAR"
btn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
local _, hrp = getParts()
setWind(hrp, 2)
footRing(hrp)
else
stopFly()
end
end)
player.CharacterAdded:Connect(function()
if flying then
stopFly()
end
end)No comments yet for this script.



