Fling fly script invisible
Key RequiredUniversal

Fling fly script invisible

Universal ScriptNormaziah_myNormaziah_my 1.3K views 306 executesUpdated Mar 23, 2026
Unrated
00
Lua Script•253 lines (9231 chars)
-- Spin Fly Fling + Invisible Script | Mobile + PC | Delta Executor
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local humanoid = character:WaitForChild("Humanoid")

-- Settings
local flySpeed = 9995
local flingPower = 9999
local spinSpeed = 50
local flingRadius = 20

local flying = false
local invisible = false
local bodyVelocity = nil
local bodyGyro = nil
local spinAngle = 0

-- Mobile button states
local mobileKeys = {
    W = false, A = false, S = false, D = false,
    UP = false, DOWN = false
}

-- Make only YOUR character invisible/visible
local function setInvisibility(state)
    local char = localPlayer.Character
    if not char then return end
    for _, part in pairs(char:GetDescendants()) do
        if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
            part.LocalTransparencyModifier = state and 1 or 0
        end
        if part:IsA("Decal") then
            part.Transparency = state and 1 or 0
        end
    end
end

-- GUI Setup
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SpinFlyGUI"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = localPlayer.PlayerGui

local function makeButton(name, text, pos, size, color)
    local btn = Instance.new("TextButton")
    btn.Name = name
    btn.Text = text
    btn.Position = pos
    btn.Size = size
    btn.BackgroundColor3 = color
    btn.BackgroundTransparency = 0.3
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.TextScaled = true
    btn.Font = Enum.Font.GothamBold
    btn.BorderSizePixel = 0
    btn.Parent = screenGui

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0.2, 0)
    corner.Parent = btn

    return btn
end

-- Buttons
local toggleBtn = makeButton("Toggle", "FLY: OFF", UDim2.new(0.5, -130, 0, 10), UDim2.new(0, 120, 0, 45), Color3.fromRGB(200, 50, 50))
local invisBtn  = makeButton("Invis", "INVIS: OFF", UDim2.new(0.5, 10, 0, 10), UDim2.new(0, 120, 0, 45), Color3.fromRGB(100, 50, 200))

local btnW    = makeButton("W",    "W",  UDim2.new(0, 80,  1, -210), UDim2.new(0, 60, 0, 60), Color3.fromRGB(50, 100, 200))
local btnA    = makeButton("A",    "A",  UDim2.new(0, 10,  1, -140), UDim2.new(0, 60, 0, 60), Color3.fromRGB(50, 100, 200))
local btnS    = makeButton("S",    "S",  UDim2.new(0, 80,  1, -140), UDim2.new(0, 60, 0, 60), Color3.fromRGB(50, 100, 200))
local btnD    = makeButton("D",    "D",  UDim2.new(0, 150, 1, -140), UDim2.new(0, 60, 0, 60), Color3.fromRGB(50, 100, 200))
local btnUp   = makeButton("UP",   "UP", UDim2.new(1, -80, 1, -210), UDim2.new(0, 60, 0, 60), Color3.fromRGB(50, 180, 80))
local btnDown = makeButton("DOWN", "DN", UDim2.new(1, -80, 1, -140), UDim2.new(0, 60, 0, 60), Color3.fromRGB(180, 80, 50))

-- Hold logic
local function setupHold(btn, key)
    btn.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.Touch or
           input.UserInputType == Enum.UserInputType.MouseButton1 then
            mobileKeys[key] = true
        end
    end)
    btn.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.Touch or
           input.UserInputType == Enum.UserInputType.MouseButton1 then
            mobileKeys[key] = false
        end
    end)
end

setupHold(btnW, "W")
setupHold(btnA, "A")
setupHold(btnS, "S")
setupHold(btnD, "D")
setupHold(btnUp, "UP")
setupHold(btnDown, "DOWN")

-- Invisibility toggle
invisBtn.MouseButton1Click:Connect(function()
    invisible = not invisible
    if invisible then
        invisBtn.Text = "INVIS: ON"
        invisBtn.BackgroundColor3 = Color3.fromRGB(180, 100, 255)
        setInvisibility(true)
    else
        invisBtn.Text = "INVIS: OFF"
        invisBtn.BackgroundColor3 = Color3.fromRGB(100, 50, 200)
        setInvisibility(false)
    end
end)

-- Keep invisible on respawn
localPlayer.CharacterAdded:Connect(function(newChar)
    character = newChar
    humanoidRootPart = newChar:WaitForChild("HumanoidRootPart")
    humanoid = newChar:WaitForChild("Humanoid")

    if invisible then
        task.wait(0.5)
        setInvisibility(true)
    end

    if flying then
        bodyVelocity = Instance.new("BodyVelocity")
        bodyVelocity.Velocity = Vector3.new(0, 0, 0)
        bodyVelocity.MaxForce = Vector3.new(1e9, 1e9, 1e9)
        bodyVelocity.Parent = humanoidRootPart

        bodyGyro = Instance.new("BodyGyro")
        bodyGyro.MaxTorque = Vector3.new(1e9, 1e9, 1e9)
        bodyGyro.P = 1e6
        bodyGyro.Parent = humanoidRootPart

        humanoid.PlatformStand = true
    end
end)

-- Fly toggle
toggleBtn.MouseButton1Click:Connect(function()
    flying = not flying
    character = localPlayer.Character
    if not character then return end
    humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
    humanoid = character:FindFirstChild("Humanoid")

    if flying then
        toggleBtn.Text = "FLY: ON"
        toggleBtn.BackgroundColor3 = Color3.fromRGB(50, 180, 80)

        bodyVelocity = Instance.new("BodyVelocity")
        bodyVelocity.Velocity = Vector3.new(0, 0, 0)
        bodyVelocity.MaxForce = Vector3.new(1e9, 1e9, 1e9)
        bodyVelocity.Parent = humanoidRootPart

        bodyGyro = Instance.new("BodyGyro")
        bodyGyro.MaxTorque = Vector3.new(1e9, 1e9, 1e9)
        bodyGyro.P = 1e6
        bodyGyro.Parent = humanoidRootPart

        humanoid.PlatformStand = true
    else
        toggleBtn.Text = "FLY: OFF"
        toggleBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)

        if bodyVelocity then bodyVelocity:Destroy() end
        if bodyGyro then bodyGyro:Destroy() end
        humanoid.PlatformStand = false
    end
end)

-- Keyboard (PC)
UserInputService.InputBegan:Connect(function(input, gpe)
    if gpe then return end
    if input.KeyCode == Enum.KeyCode.E then
        toggleBtn.MouseButton1Click:Fire()
    end
    if input.KeyCode == Enum.KeyCode.I then
        invisBtn.MouseButton1Click:Fire()
    end
end)

local function isHeld(key)
    if key == "W" then return mobileKeys.W or UserInputService:IsKeyDown(Enum.KeyCode.W) end
    if key == "A" then return mobileKeys.A or UserInputService:IsKeyDown(Enum.KeyCode.A) end
    if key == "S" then return mobileKeys.S or UserInputService:IsKeyDown(Enum.KeyCode.S) end
    if key == "D" then return mobileKeys.D or UserInputService:IsKeyDown(Enum.KeyCode.D) end
    if key == "UP" then return mobileKeys.UP or UserInputService:IsKeyDown(Enum.KeyCode.Space) end
    if key == "DOWN" then return mobileKeys.DOWN or UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) end
    return false
end

-- Main loop
RunService.RenderStepped:Connect(function(dt)
    character = localPlayer.Character
    if not character then return end
    humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
    if not humanoidRootPart then return end

    -- Keep invisible every frame so it doesnt flicker back
    if invisible then
        setInvisibility(true)
    end

    if flying and bodyVelocity and bodyGyro then
        spinAngle = spinAngle + spinSpeed * dt

        bodyGyro.CFrame = CFrame.new(humanoidRootPart.Position)
            * CFrame.Angles(0, math.rad(spinAngle), 0)

        local camera = workspace.CurrentCamera
        local moveDir = Vector3.new(0, 0, 0)

        if isHeld("W") then moveDir = moveDir + camera.CFrame.LookVector end
        if isHeld("S") then moveDir = moveDir - camera.CFrame.LookVector end
        if isHeld("A") then moveDir = moveDir - camera.CFrame.RightVector end
        if isHeld("D") then moveDir = moveDir + camera.CFrame.RightVector end
        if isHeld("UP") then moveDir = moveDir + Vector3.new(0, 1, 0) end
        if isHeld("DOWN") then moveDir = moveDir - Vector3.new(0, 1, 0) end

        if moveDir.Magnitude > 0 then
            moveDir = moveDir.Unit
        end

        bodyVelocity.Velocity = moveDir * flySpeed

        -- Fling nearby players
        for _, player in pairs(Players:GetPlayers()) do
            if player ~= localPlayer and player.Character then
                local targetHRP = player.Character:FindFirstChild("HumanoidRootPart")
                if targetHRP then
                    local dist = (targetHRP.Position - humanoidRootPart.Position).Magnitude
                    if dist <= flingRadius then
                        local bv = targetHRP:FindFirstChild("FlingVel") or Instance.new("BodyVelocity")
                        bv.Name = "FlingVel"
                        bv.MaxForce = Vector3.new(1e9, 1e9, 1e9)
                        local dir = (targetHRP.Position - humanoidRootPart.Position).Unit
                        local spinDir = CFrame.Angles(0, math.rad(spinAngle), 0).LookVector
                        bv.Velocity = (dir + spinDir + Vector3.new(0, 1, 0)) * flingPower
                        bv.Parent = targetHRP
                        game:GetService("Debris"):AddItem(bv, 0.1)
                    end
                end
            end
        end
    end
end)

Features & Information

Idk
#Idk

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts