--// MOBILE MOVEMENT GUI --// Put this in: --// StarterPlayer > StarterPlayerScripts > LocalScript local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local character local humanoid local root local flying = false local noclip = false local infiniteJump = false local walkSpeed = 16 local jumpPower = 50 local flySpeed = 60 local flyUp = false local flyDown = false local function loadCharacter(char) character = char humanoid = char:WaitForChild("Humanoid") root = char:WaitForChild("HumanoidRootPart") humanoid.WalkSpeed = walkSpeed humanoid.JumpPower = jumpPower end if player.Character then loadCharacter(player.Character) end player.CharacterAdded:Connect(loadCharacter) --================================================== -- GUI --================================================== local gui = Instance.new("ScreenGui") gui.Name = "MobileMovementGUI" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.Parent = player:WaitForChild("PlayerGui") local main = Instance.new("Frame") main.Size = UDim2.fromOffset(230, 390) main.Position = UDim2.new(0, 15, 0.5, -195) main.BackgroundColor3 = Color3.fromRGB(25, 25, 25) main.BorderSizePixel = 0 main.Active = true main.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 12) corner.Parent = main local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 45) title.BackgroundTransparency = 1 title.Text = "MOVEMENT" title.TextColor3 = Color3.new(1, 1, 1) title.TextSize = 22 title.Font = Enum.Font.GothamBold title.Parent = main -- Dragging local dragging = false local dragStart local startPosition title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPosition = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if not dragging then return end if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) local function createButton(text, y) local button = Instance.new("TextButton") button.Size = UDim2.new(1, -20, 0, 45) button.Position = UDim2.fromOffset(10, y) button.BackgroundColor3 = Color3.fromRGB(45, 45, 45) button.TextColor3 = Color3.new(1, 1, 1) button.Text = text button.TextSize = 17 button.Font = Enum.Font.GothamBold button.AutoButtonColor = true button.Parent = main local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 8) c.Parent = button return button end local flyButton = createButton("FLY: OFF", 50) local speedButton = createButton("WALK SPEED: 16", 102) local noclipButton = createButton("NOCLIP: OFF", 154) local infJumpButton = createButton("INF JUMP: OFF", 206) local jumpButton = createButton("JUMP POWER: 50", 258) --================================================== -- FLY UP/DOWN BUTTONS --================================================== local upButton = createButton("▲ FLY UP", 310) local downButton = createButton("▼ FLY DOWN", 362) -- Make the frame slightly taller main.Size = UDim2.fromOffset(230, 420) --================================================== -- FLY --================================================== flyButton.Activated:Connect(function() flying = not flying if flying then flyButton.Text = "FLY: ON" else flyButton.Text = "FLY: OFF" if root then root.AssemblyLinearVelocity = Vector3.zero end if humanoid then humanoid:ChangeState(Enum.HumanoidStateType.GettingUp) end end end) --================================================== -- WALK SPEED --================================================== speedButton.Activated:Connect(function() if walkSpeed == 16 then walkSpeed = 32 elseif walkSpeed == 32 then walkSpeed = 50 elseif walkSpeed == 50 then walkSpeed = 75 elseif walkSpeed == 75 then walkSpeed = 100 else walkSpeed = 16 end speedButton.Text = "WALK SPEED: " .. walkSpeed if humanoid then humanoid.WalkSpeed = walkSpeed end end) --================================================== -- NOCLIP --================================================== noclipButton.Activated:Connect(function() noclip = not noclip if noclip then noclipButton.Text = "NOCLIP: ON" else noclipButton.Text = "NOCLIP: OFF" if character then for _, obj in ipairs(character:GetDescendants()) do if obj:IsA("BasePart") then obj.CanCollide = true end end end end end) RunService.Stepped:Connect(function() if not noclip or not character then return end for _, obj in ipairs(character:GetDescendants()) do if obj:IsA("BasePart") then obj.CanCollide = false end end end) --================================================== -- INFINITE JUMP --================================================== infJumpButton.Activated:Connect(function() infiniteJump = not infiniteJump if infiniteJump then infJumpButton.Text = "INF JUMP: ON" else infJumpButton.Text = "INF JUMP: OFF" end end) UserInputService.JumpRequest:Connect(function() if infiniteJump and humanoid then humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end) --================================================== -- JUMP POWER --================================================== jumpButton.Activated:Connect(function() if jumpPower == 50 then jumpPower = 75 elseif jumpPower == 75 then jumpPower = 100 elseif jumpPower == 100 then jumpPower = 150 else jumpPower = 50 end jumpButton.Text = "JUMP POWER: " .. jumpPower if humanoid then humanoid.JumpPower = jumpPower end end) --================================================== -- FLY UP/DOWN TOUCH BUTTONS --================================================== local function holdButton(button, variableName) button.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then if variableName == "up" then flyUp = true else flyDown = true end end end) button.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then if variableName == "up" then flyUp = false else flyDown = false end end end) end holdButton(upButton, "up") holdButton(downButton, "down") --================================================== -- FLY MOVEMENT --================================================== RunService.RenderStepped:Connect(function() if not flying then return end if not character or not humanoid or not root then return end -- Roblox's built-in mobile joystick local direction = humanoid.MoveDirection local velocity = direction * flySpeed -- Up/down buttons if flyUp then velocity += Vector3.new(0, flySpeed, 0) end if flyDown then velocity -= Vector3.new(0, flySpeed, 0) end root.AssemblyLinearVelocity = velocity -- Prevent normal falling humanoid:ChangeState(Enum.HumanoidStateType.Physics) end) --================================================== -- RESPAWN SUPPORT --================================================== player.CharacterAdded:Connect(function(char) loadCharacter(char) task.wait(0.25) if humanoid then humanoid.WalkSpeed = walkSpeed humanoid.JumpPower = jumpPower end end)