Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
TweenService = :()
Debris = :()
ReplicatedStorage = :()
player = Players.LocalPlayer
camera = .CurrentCamera
FLY_KEY = .KeyCode.H
BOOST_KEY = .KeyCode.E
FLY_SPEED =
BOOST_SPEED =
BOOST_DURATION =
isFlying =
isBoosting =
currentVelocity = .(, , )
activeFlySpeed = FLY_SPEED
character, hrp, humanoid, animator
bodyVelocity, bodyGyro
windSound
flyAnimations = {}
auraParticles = {}
controls
ANIM_IDS = {
Forward = ,
Backward = ,
Right = ,
Left = ,
Hover =
}
(magnitude, duration)
.(()
startTime = ()
() - startTime < duration
offset = .(
.(-, ) / * magnitude,
.(-, ) / * magnitude,
.(-, ) / * magnitude
)
camera.CFrame = camera.CFrame * .(offset)
RunService.RenderStepped:()
)
(path)
current = ReplicatedStorage
_, name (path)
current = current current:(name)
current
(name, weight)
track = flyAnimations[name]
track
weight >
track.IsPlaying track:()
track:(weight, )
track.IsPlaying
track:(, )
.(, ()
track.IsPlaying track.Weight <= track:()
)
(vel, speed, boosting)
hrpCF = hrp.CFrame
fwd, bwd, rgt, lft = , , ,
speed >
dir = vel.Unit
dotF = dir:(hrpCF.LookVector)
dotR = dir:(hrpCF.RightVector)
fwd = .(, dotF)
bwd = .(, -dotF)
rgt = .(, dotR)
lft = .(, -dotR)
sum = fwd + bwd + rgt + lft
sum >
fwd, bwd, rgt, lft = fwd/sum, bwd/sum, rgt/sum, lft/sum
isMovingForward = fwd > rgt < lft <
boosting
(, fwd > )
(, )
(, )
(, )
fwd <=
(, )
(, )
sum <=
(, )
(, )
(, )
(, )
(, )
isMovingForward
(, )
(, )
(, fwd > fwd )
(, bwd > bwd )
(, rgt > rgt )
(, lft > lft )
()
limbs = {, , , , , }
_, limbName (limbs)
limb = character:(limbName)
limb
emitter = .()
emitter.Name =
emitter.Color = ColorSequence.(.(, , ))
emitter.LightEmission =
emitter.LightInfluence =
emitter.Size = NumberSequence.({
NumberSequenceKeypoint.(, ),
NumberSequenceKeypoint.(, )
})
emitter.Transparency = NumberSequence.({
NumberSequenceKeypoint.(, ),
NumberSequenceKeypoint.(, )
})
emitter.Lifetime = NumberRange.(, )
emitter.Rate =
emitter.Speed = NumberRange.(, )
emitter.SpreadAngle = .(, )
emitter.RotSpeed = NumberRange.(-, )
emitter.Rotation = NumberRange.(, )
emitter.LockedToPart =
emitter.VelocityInheritance =
emitter.Parent = limb
.(auraParticles, emitter)
()
_, emitter (auraParticles)
emitter emitter.Parent emitter:()
auraParticles = {}
()
flyAnimations = {}
name, id (ANIM_IDS)
anim = .()
anim.AnimationId = id
track = animator:(anim)
track.Priority = .AnimationPriority.Action4
name == track.Looped =
flyAnimations[name] = track
()
isFlying
isFlying =
humanoid.PlatformStand =
bodyVelocity = .()
bodyVelocity.MaxForce = .(, , )
bodyVelocity.Velocity = .(, , )
bodyVelocity.Parent = hrp
bodyGyro = .()
bodyGyro.MaxTorque = .(, , )
bodyGyro.P =
bodyGyro.D =
bodyGyro.CFrame = hrp.CFrame
bodyGyro.Parent = hrp
()
windSound
windSound:()
TweenService:(windSound, TweenInfo.(), {Volume = }):()
()
isFlying
isFlying =
isBoosting =
activeFlySpeed = FLY_SPEED
currentVelocity = .(, , )
bodyVelocity bodyVelocity:()
bodyGyro bodyGyro:()
humanoid.PlatformStand =
hrp.Velocity = .(, , )
hrp.RotVelocity = .(, , )
_, track (flyAnimations)
track.IsPlaying track:()
TweenService:(camera, TweenInfo.(), {FieldOfView = }):()
windSound
TweenService:(windSound, TweenInfo.(), {Volume = }):()
.(, ()
windSound isFlying windSound:()
)
()
()
isFlying isBoosting
isBoosting =
activeFlySpeed = BOOST_SPEED
(()
boostVFX = ({, , , })
boostVFX
boostVFX = boostVFX:()
boostVFX.Parent = :()
Debris:(boostVFX, )
.(, ()
_, desc (boostVFX:())
desc:()
TweenService:(desc, TweenInfo.(), {Width0 = , Width1 = }):()
desc:()
desc.Enabled =
)
conn
conn = RunService.Heartbeat:(()
boostVFX boostVFX.Parent
conn conn:()
hrp hrp.Parent
lookDir = hrp.Velocity
lookDir.Magnitude < lookDir = hrp.CFrame.LookVector
targetCF = .(hrp.Position, -lookDir) * .(, , .(.(, )))
boostVFX:() boostVFX.PrimaryPart
boostVFX:(targetCF)
boostVFX:()
boostVFX.CFrame = targetCF
)
)
(()
dashSound = ({, , , })
dashSound
dashSound = dashSound:()
dashSound.Parent = hrp
dashSound:()
Debris:(dashSound, )
)
boostLight = .()
boostLight.Color = .(, , )
boostLight.Brightness =
boostLight.Range =
boostLight.Parent = hrp
TweenService:(boostLight, TweenInfo.(BOOST_DURATION), {Brightness = }):()
Debris:(boostLight, BOOST_DURATION)
(()
windNum = .(, )
windVFX = ({, , .. windNum})
windVFX
windVFX = windVFX:()
windVFX.Parent = :()
Debris:(windVFX, )
lookDir = hrp.Velocity
lookDir.Magnitude < lookDir = hrp.CFrame.LookVector
startCF = .(hrp.Position, lookDir) * .(.(), .(.(, )), )
windVFX:() windVFX.PrimaryPart
windVFX:(startCF)
_, desc (windVFX:())
desc:()
desc.Transparency =
desc.Size = .(, , )
TweenService:(windVFX.PrimaryPart, TweenInfo.(, .EasingStyle.Quad), {
= startCF + hrp.CFrame.LookVector * ,
Size = .(, , )
}):()
TweenService:(windVFX.PrimaryPart, TweenInfo.(), {Transparency = }):()
.(, ()
TweenService:(windVFX.PrimaryPart, TweenInfo.(), {Transparency = }):()
)
windVFX:()
windVFX.CFrame = startCF
windVFX.Transparency =
windVFX.Size = .(, , )
TweenService:(windVFX, TweenInfo.(, .EasingStyle.Quad), {
= startCF + hrp.CFrame.LookVector * ,
Size = .(, , )
}):()
TweenService:(windVFX, TweenInfo.(), {Transparency = }):()
.(, ()
TweenService:(windVFX, TweenInfo.(), {Transparency = }):()
)
)
(, )
.(BOOST_DURATION, ()
isBoosting =
numVal = .()
numVal.Value = BOOST_SPEED
tween = TweenService:(numVal, TweenInfo.(, .EasingStyle.Exponential, .EasingDirection.Out), {Value = FLY_SPEED})
tween:()
conn
conn = numVal.Changed:((val)
isBoosting
activeFlySpeed = val
conn:()
numVal:()
)
tween.Completed:(()
conn:()
numVal:()
isBoosting activeFlySpeed = FLY_SPEED
)
)
(char)
character = char
hrp = char:()
humanoid = char:()
animator = humanoid:()
windSound = .()
windSound.SoundId =
windSound.Looped =
windSound.Volume =
windSound.PlaybackSpeed =
windSound.Parent = hrp
()
(()
playerModule = (player.PlayerScripts:())
controls = playerModule:()
)
player.CharacterAdded:(onCharacterAdded)
player.Character (player.Character)
RunService.RenderStepped:((dt)
isFlying hrp
moveVector = .(, , )
camCF = camera.CFrame
controls
vec = controls:()
vec.Magnitude >
moveVector = camCF.RightVector * vec.X - camCF.LookVector * vec.Z
moveVector.Magnitude > moveVector = moveVector.Unit
ix, iz = ,
UserInputService:(.KeyCode.W) iz = -
UserInputService:(.KeyCode.S) iz =
UserInputService:(.KeyCode.A) ix = -
UserInputService:(.KeyCode.D) ix =
moveVector = camCF.RightVector * ix - camCF.LookVector * iz
moveVector.Magnitude > moveVector = moveVector.Unit
targetVelocity = moveVector * activeFlySpeed
acceleration = (targetVelocity.Magnitude > currentVelocity.Magnitude)
currentVelocity = currentVelocity:(targetVelocity, .(acceleration * dt, , ))
bodyVelocity bodyVelocity.Velocity = currentVelocity
bodyGyro
camLook = camera.CFrame.LookVector
targetCFrame = .(hrp.Position, hrp.Position + camLook)
isMoving = currentVelocity.Magnitude >
isMouseLocked = UserInputService.MouseBehavior == .MouseBehavior.LockCenter
isMoving isMouseLocked
isBoosting
targetCFrame = targetCFrame * .(.(), , )
targetCFrame = bodyGyro.CFrame
bodyGyro.CFrame = bodyGyro.CFrame:(targetCFrame, .(dt * , , ))
(currentVelocity, currentVelocity.Magnitude, isBoosting)
speed = currentVelocity.Magnitude
maxSpeed = FLY_SPEED *
targetFOV = + .((speed - ) / maxSpeed, , ) *
camera.FieldOfView = camera.FieldOfView + ((targetFOV - camera.FieldOfView) * dt) *
speed >
shakeMag = .(speed / maxSpeed, , ) *
offset = .(
.(-, ) / * shakeMag,
.(-, ) / * shakeMag,
.(-, ) / * shakeMag
)
camera.CFrame = camera.CFrame * .(offset)
windSound
windSound.Volume = * .(speed / FLY_SPEED, , )
windSound.PlaybackSpeed = + (speed / FLY_SPEED) *
#auraParticles >
velInheritance = speed >=
_, emitter (auraParticles)
emitter emitter.Parent
emitter.VelocityInheritance = velInheritance
)
UserInputService.InputBegan:((input, processed)
processed
input.KeyCode == FLY_KEY
isFlying () ()
input.KeyCode == BOOST_KEY
isFlying ()
)It haves only Flight and Boost no R Lock On and punch (PLACEHOLDER Image) PC only

Universal