Superman Flight
Key RequiredUniversal

Superman Flight

Universal ScriptISOXTERIAISOXTERIA 910 views 4.9K executesUpdated Sep 29, 2026
Unrated
00
Lua Script•495 lines (14607 chars)
-- LocalScript inside StarterPlayer -> StarterPlayerScripts
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()

local Window = Rayfield:CreateWindow({
	Name = "Ultimate Fly Script",
	LoadingTitle = "Fly Utility",
	LoadingSubtitle = "ISOXTERIA",
	ConfigurationSaving = {
		Enabled = true,
		FolderName = "AIMBOT",
		FileName = "FlyConfig"
	},
	Discord = { Enabled = false },
	KeySystem = false
})

local FlightTab = Window:CreateTab("Flight Controls", 4483362458)

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local TweenService = game:GetService("TweenService")

local LocalPlayer = Players.LocalPlayer
local Flying = false
local FlySpeed = 50
local BoostMultiplier = 2.5
local BoostCooldown = 1.2
local CanBoost = true
local NoclipWhileFlying = false
local EnableAnimations = true
local EnableTrail = true
local DynamicFOV = true

local Attachment, LinearVelocity, AlignOrientation
local CurrentVelocity = Vector3.zero
local TargetVelocity = Vector3.zero
local CurrentLean = 0
local CurrentTilt = 0
local CurrentRoll = 0
local BobTimer = 0

local TrailInstance = nil
local Attachment0, Attachment1
local DefaultFOV = 70

-- Dynamic Universal Arm Joint Variables (Supports R6, R15 & Custom Rigs)
local LeftShoulder, RightShoulder
local OriginalLeftC0, OriginalRightC0
local CurrentChar = nil

local function getCharacterParts()
	local char = LocalPlayer.Character
	if char then
		local hum = char:FindFirstChildOfClass("Humanoid")
		local root = char:FindFirstChild("HumanoidRootPart")
		local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") or root
		return char, hum, root, torso
	end
	return nil, nil, nil, nil
end

-- Universal Joint Finder (Scans Rig Structure for Shoulders)
local function SetupArmJoints()
	local char = getCharacterParts()
	if not char then return end

	-- Clear previous references if character reset
	if char ~= CurrentChar then
		CurrentChar = char
		LeftShoulder = nil
		RightShoulder = nil
		OriginalLeftC0 = nil
		OriginalRightC0 = nil
	end

	if LeftShoulder and RightShoulder then return end

	-- Dynamic Search across all descendants for Motor6D Shoulder Joints
	for _, v in pairs(char:GetDescendants()) do
		if v:IsA("Motor6D") then
			local name = v.Name:lower()
			if (name:find("left") or name:find("l_")) and (name:find("shoulder") or name:find("arm")) then
				if not LeftShoulder then LeftShoulder = v end
			elseif (name:find("right") or name:find("r_")) and (name:find("shoulder") or name:find("arm")) then
				if not RightShoulder then RightShoulder = v end
			end
		end
	end

	-- Fallback check for standard Roblox Rig naming
	if not LeftShoulder then
		LeftShoulder = char:FindFirstChild("Left Shoulder", true) or char:FindFirstChild("LeftShoulder", true)
	end
	if not RightShoulder then
		RightShoulder = char:FindFirstChild("Right Shoulder", true) or char:FindFirstChild("RightShoulder", true)
	end

	-- Cache original C0 positions
	if LeftShoulder and not OriginalLeftC0 then
		OriginalLeftC0 = LeftShoulder.C0
	end
	if RightShoulder and not OriginalRightC0 then
		OriginalRightC0 = RightShoulder.C0
	end
end

local function ResetArmJoints()
	if LeftShoulder and OriginalLeftC0 then
		TweenService:Create(LeftShoulder, TweenInfo.new(0.25), {C0 = OriginalLeftC0}):Play()
	end
	if RightShoulder and OriginalRightC0 then
		TweenService:Create(RightShoulder, TweenInfo.new(0.25), {C0 = OriginalRightC0}):Play()
	end
end

local function ApplySupermanPose(isMovingForward)
	if not LeftShoulder or not RightShoulder then return end
	if not OriginalLeftC0 or not OriginalRightC0 then return end

	if isMovingForward and EnableAnimations then
		-- Universal Superman Arm Pose Offset (Works across R6, R15, Rthro)
		local leftTargetC0 = OriginalLeftC0 * CFrame.Angles(math.rad(175), math.rad(-5), math.rad(5))
		local rightTargetC0 = OriginalRightC0 * CFrame.Angles(math.rad(175), math.rad(5), math.rad(-5))

		TweenService:Create(LeftShoulder, TweenInfo.new(0.25), {C0 = leftTargetC0}):Play()
		TweenService:Create(RightShoulder, TweenInfo.new(0.25), {C0 = rightTargetC0}):Play()
	else
		ResetArmJoints()
	end
end

-- Create Sonic Shockwave Effect
local function SpawnShockwave(position, direction)
	local shockwave = Instance.new("Part")
	shockwave.Name = "SonicShockwave"
	shockwave.Shape = Enum.PartType.Cylinder
	shockwave.Size = Vector3.new(0.2, 2, 2)
	shockwave.Material = Enum.Material.Neon
	shockwave.Color = Color3.fromRGB(0, 220, 255)
	shockwave.Transparency = 0.25
	shockwave.Anchored = true
	shockwave.CanCollide = false
	shockwave.CFrame = CFrame.lookAt(position, position + direction) * CFrame.Angles(0, math.rad(90), 0)
	shockwave.Parent = Workspace

	local innerRing = shockwave:Clone()
	innerRing.Color = Color3.fromRGB(255, 255, 255)
	innerRing.Size = Vector3.new(0.3, 1, 1)
	innerRing.Parent = Workspace

	local tweenInfo = TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
	
	local outerTween = TweenService:Create(shockwave, tweenInfo, {
		Size = Vector3.new(0.1, 40, 40),
		Transparency = 1
	})
	local innerTween = TweenService:Create(innerRing, tweenInfo, {
		Size = Vector3.new(0.1, 25, 25),
		Transparency = 1
	})

	outerTween:Play()
	innerTween:Play()

	outerTween.Completed:Connect(function()
		shockwave:Destroy()
		innerRing:Destroy()
	end)
end

local function SetupTrail(rootPart)
	if TrailInstance then TrailInstance:Destroy() end
	if Attachment0 then Attachment0:Destroy() end
	if Attachment1 then Attachment1:Destroy() end

	Attachment0 = Instance.new("Attachment")
	Attachment0.Position = Vector3.new(-1.5, 0, 0)
	Attachment0.Parent = rootPart

	Attachment1 = Instance.new("Attachment")
	Attachment1.Position = Vector3.new(1.5, 0, 0)
	Attachment1.Parent = rootPart

	TrailInstance = Instance.new("Trail")
	TrailInstance.Attachment0 = Attachment0
	TrailInstance.Attachment1 = Attachment1
	TrailInstance.Lifetime = 0.35
	TrailInstance.MinLength = 0.1
	TrailInstance.Transparency = NumberSequence.new({
		NumberSequenceKeypoint.new(0, 0.2),
		NumberSequenceKeypoint.new(1, 1)
	})
	TrailInstance.Color = ColorSequence.new(Color3.fromRGB(0, 170, 255), Color3.fromRGB(150, 0, 255))
	TrailInstance.Enabled = EnableTrail
	TrailInstance.Parent = rootPart
end

local function TriggerShockwaveBoost()
	if not Flying or not CanBoost then return end

	local _, _, rootPart = getCharacterParts()
	if not rootPart then return end

	CanBoost = false

	local camera = Workspace.CurrentCamera
	local boostDir = camera.CFrame.LookVector

	SpawnShockwave(rootPart.Position, boostDir)

	CurrentVelocity = boostDir * (FlySpeed * BoostMultiplier)

	if DynamicFOV then
		local startFOV = camera.FieldOfView
		TweenService:Create(camera, TweenInfo.new(0.12), {FieldOfView = math.min(startFOV + 25, 120)}):Play()
		task.delay(0.12, function()
			TweenService:Create(camera, TweenInfo.new(0.35), {FieldOfView = startFOV}):Play()
		end)
	end

	task.delay(BoostCooldown, function()
		CanBoost = true
	end)
end

local function EnableFly()
	local char, humanoid, rootPart = getCharacterParts()
	if not rootPart or not humanoid then return end

	Flying = true
	humanoid.PlatformStand = true
	humanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false)
	humanoid:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false)

	SetupArmJoints()

	Attachment = Instance.new("Attachment")
	Attachment.Name = "FlyAttachment"
	Attachment.Parent = rootPart

	LinearVelocity = Instance.new("LinearVelocity")
	LinearVelocity.MaxForce = 1e8
	LinearVelocity.VectorVelocity = Vector3.zero
	LinearVelocity.Attachment0 = Attachment
	LinearVelocity.RelativeTo = Enum.ActuatorRelativeTo.World
	LinearVelocity.Parent = rootPart

	AlignOrientation = Instance.new("AlignOrientation")
	AlignOrientation.MaxTorque = 1e8
	AlignOrientation.MaxAngularVelocity = 150
	AlignOrientation.Responsiveness = 250
	AlignOrientation.Mode = Enum.OrientationAlignmentMode.OneAttachment
	AlignOrientation.Attachment0 = Attachment
	AlignOrientation.CFrame = rootPart.CFrame
	AlignOrientation.Parent = rootPart

	SetupTrail(rootPart)
	DefaultFOV = Workspace.CurrentCamera.FieldOfView
end

local function DisableFly()
	Flying = false
	CurrentVelocity = Vector3.zero
	TargetVelocity = Vector3.zero
	CurrentLean = 0
	CurrentTilt = 0
	CurrentRoll = 0
	BobTimer = 0

	ResetArmJoints()

	local char, humanoid = getCharacterParts()
	if humanoid then
		humanoid.PlatformStand = false
		humanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown, true)
		humanoid:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, true)
	end

	if LinearVelocity then LinearVelocity:Destroy() end
	if AlignOrientation then AlignOrientation:Destroy() end
	if Attachment then Attachment:Destroy() end
	if TrailInstance then TrailInstance:Destroy() end
	if Attachment0 then Attachment0:Destroy() end
	if Attachment1 then Attachment1:Destroy() end

	TweenService:Create(Workspace.CurrentCamera, TweenInfo.new(0.3), {FieldOfView = DefaultFOV}):Play()
end

-- UI CONTROLS
local FlyToggle = FlightTab:CreateToggle({
	Name = "Enable Flight",
	CurrentValue = false,
	Flag = "FlyToggle",
	Callback = function(Value)
		if Value then EnableFly() else DisableFly() end
	end,
})

FlightTab:CreateSlider({
	Name = "Flight Speed (Studs/s)",
	Range = {10, 1000},
	Increment = 10,
	Suffix = "Studs",
	CurrentValue = 50,
	Flag = "FlySpeedSlider",
	Callback = function(Value)
		FlySpeed = Value
	end,
})

FlightTab:CreateSlider({
	Name = "Shift Boost Multiplier",
	Range = {1.5, 5},
	Increment = 0.5,
	Suffix = "x",
	CurrentValue = 2.5,
	Flag = "BoostMultiplierSlider",
	Callback = function(Value)
		BoostMultiplier = Value
	end,
})

FlightTab:CreateToggle({
	Name = "Superman Pose & Animations",
	CurrentValue = true,
	Flag = "FlyAnimToggle",
	Callback = function(Value)
		EnableAnimations = Value
		if not Value then ResetArmJoints() end
	end,
})

FlightTab:CreateToggle({
	Name = "Dynamic Speed FOV",
	CurrentValue = true,
	Flag = "DynamicFOVToggle",
	Callback = function(Value)
		DynamicFOV = Value
		if not Value then
			TweenService:Create(Workspace.CurrentCamera, TweenInfo.new(0.3), {FieldOfView = DefaultFOV}):Play()
		end
	end,
})

FlightTab:CreateToggle({
	Name = "Flight Speed Trail",
	CurrentValue = true,
	Flag = "FlyTrailToggle",
	Callback = function(Value)
		EnableTrail = Value
		if TrailInstance then
			TrailInstance.Enabled = Value
		end
	end,
})

FlightTab:CreateToggle({
	Name = "Noclip While Flying",
	CurrentValue = false,
	Flag = "NoclipFlyToggle",
	Callback = function(Value)
		NoclipWhileFlying = Value
	end,
})

FlightTab:CreateKeybind({
	Name = "Toggle Fly Keybind",
	CurrentKeybind = "E",
	HoldToInteract = false,
	Flag = "FlyKeybind",
	Callback = function()
		FlyToggle:Set(not Flying)
	end,
})

-- Listen for Shift Key Boost Press
UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if gameProcessed then return end
	if input.KeyCode == Enum.KeyCode.LeftShift and Flying then
		TriggerShockwaveBoost()
	end
end)

-- Re-hook joint listener on character respawn
LocalPlayer.CharacterAdded:Connect(function()
	task.wait(0.5)
	SetupArmJoints()
end)

-- MAIN MOVEMENT & ANIMATION LOOP
RunService.Stepped:Connect(function(_, deltaTime)
	if not Flying then return end

	local char, humanoid, rootPart = getCharacterParts()
	if not rootPart or not LinearVelocity or not AlignOrientation then return end

	if NoclipWhileFlying and char then
		for _, part in pairs(char:GetDescendants()) do
			if part:IsA("BasePart") then
				part.CanCollide = false
			end
		end
	end

	local Camera = Workspace.CurrentCamera
	local rawDir = Vector3.zero

	local isW = UserInputService:IsKeyDown(Enum.KeyCode.W)
	local isS = UserInputService:IsKeyDown(Enum.KeyCode.S)
	local isA = UserInputService:IsKeyDown(Enum.KeyCode.A)
	local isD = UserInputService:IsKeyDown(Enum.KeyCode.D)

	if isW then rawDir = rawDir + Camera.CFrame.LookVector end
	if isS then rawDir = rawDir - Camera.CFrame.LookVector end
	if isA then rawDir = rawDir - Camera.CFrame.RightVector end
	if isD then rawDir = rawDir + Camera.CFrame.RightVector end
	if UserInputService:IsKeyDown(Enum.KeyCode.Space) then rawDir = rawDir + Vector3.new(0, 1, 0) end

	-- Smooth Velocity Calculation
	if rawDir.Magnitude > 0 then
		TargetVelocity = rawDir.Unit * FlySpeed
	else
		TargetVelocity = Vector3.zero
	end

	CurrentVelocity = CurrentVelocity:Lerp(TargetVelocity, math.clamp(deltaTime * 8, 0, 1))

	-- Advanced Multi-Axis Hovering Idle Animation
	BobTimer = BobTimer + deltaTime * 2.5
	local bobOffset = Vector3.zero
	local hoverJitter = Vector3.zero

	if rawDir.Magnitude == 0 and EnableAnimations then
		bobOffset = Vector3.new(
			math.cos(BobTimer * 0.8) * 0.35,
			math.sin(BobTimer * 1.5) * 0.6,
			math.sin(BobTimer * 0.5) * 0.25
		)
	elseif EnableAnimations and CurrentVelocity.Magnitude > 100 then
		-- High-speed subtle micro-vibrations for wind effect
		hoverJitter = Vector3.new(
			(math.random() - 0.5) * 0.1,
			(math.random() - 0.5) * 0.1,
			(math.random() - 0.5) * 0.1
		)
	end

	LinearVelocity.VectorVelocity = CurrentVelocity + bobOffset + hoverJitter

	-- Universal Superman Arm Pose Animation
	ApplySupermanPose(isW)

	-- Dynamic Speed FOV
	if DynamicFOV then
		local currentSpeedRatio = CurrentVelocity.Magnitude / 1000
		local targetFOV = math.clamp(DefaultFOV + (currentSpeedRatio * 35), DefaultFOV, 110)
		Camera.FieldOfView = Camera.FieldOfView + (targetFOV - Camera.FieldOfView) * math.clamp(deltaTime * 5, 0, 1)
	end

	-- Overhauled Body Pitching, Banking & Rolling Physics
	local targetLean = 0
	local targetTilt = 0
	local targetRoll = 0

	if EnableAnimations then
		if isW then 
			targetLean = math.rad(-80) -- Full horizontal Superman stance
		end
		if isS then 
			targetLean = math.rad(30) 
		end
		if isA then 
			targetTilt = math.rad(22)
			targetRoll = math.rad(-25) -- Banking roll into turns
		end
		if isD then 
			targetTilt = math.rad(-22)
			targetRoll = math.rad(25) -- Banking roll into turns
		end
	end

	CurrentLean = CurrentLean + (targetLean - CurrentLean) * math.clamp(deltaTime * 9, 0, 1)
	CurrentTilt = CurrentTilt + (targetTilt - CurrentTilt) * math.clamp(deltaTime * 9, 0, 1)
	CurrentRoll = CurrentRoll + (targetRoll - CurrentRoll) * math.clamp(deltaTime * 9, 0, 1)

	local camLook = Camera.CFrame.LookVector
	local flatLook = Vector3.new(camLook.X, 0, camLook.Z)

	if flatLook.Magnitude > 0.001 then
		local baseCFrame = CFrame.lookAt(rootPart.Position, rootPart.Position + camLook)
		AlignOrientation.CFrame = baseCFrame * CFrame.Angles(CurrentLean, CurrentRoll, CurrentTilt)
	end
end)

Features & Information

Superman Flight

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts