local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local CoreGui = game:GetService("CoreGui")
local player = Players.LocalPlayer
local wobbleConnection = nil
local originalC0 = nil
local isWobbling = false
-- GUI Setup
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "InvincibleWobbleGUI"
screenGui.ResetOnSpawn = false
local success = pcall(function()
screenGui.Parent = CoreGui
end)
if not success then
screenGui.Parent = player:WaitForChild("PlayerGui")
end
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 200, 0, 60)
frame.Position = UDim2.new(0.5, -100, 0.85, 0)
frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
frame.BorderSizePixel = 2
frame.BorderColor3 = Color3.fromRGB(200, 50, 50)
frame.Active = true
frame.Draggable = true
frame.Parent = screenGui
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(1, -10, 1, -10)
toggleBtn.Position = UDim2.new(0, 5, 0, 5)
toggleBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.TextSize = 16
toggleBtn.Text = "WOBBLE: OFF"
toggleBtn.Parent = frame
local function getRootJoint(character)
if character:FindFirstChild("Humanoid") then
if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
return character:FindFirstChild("LowerTorso") and character.LowerTorso:FindFirstChild("Root")
else
return character:FindFirstChild("HumanoidRootPart") and character.HumanoidRootPart:FindFirstChild("RootJoint")
end
end
return nil
end
local phase = 0
local timeElapsed = 0
toggleBtn.MouseButton1Click:Connect(function()
local char = player.Character
if not char then return end
local rootJoint = getRootJoint(char)
if not rootJoint then return end
isWobbling = not isWobbling
if isWobbling then
toggleBtn.Text = "WOBBLE: ON"
toggleBtn.TextColor3 = Color3.fromRGB(255, 50, 50)
originalC0 = rootJoint.C0
phase = 0
timeElapsed = 0
wobbleConnection = RunService.RenderStepped:Connect(function(dt)
timeElapsed = timeElapsed + dt
-- Speed fluctuates smoothly between 2 (slow) and 22 (very fast)
local currentSpeed = 12 + (math.sin(timeElapsed * 1.5) * 10)
-- Increment phase safely to avoid snapping when speed changes
phase = phase + (currentSpeed * dt)
-- Calculate rotation angle (max 35 degrees tilt)
local angle = math.sin(phase) * math.rad(35)
-- Apply TILT (Leaning side-to-side instead of twisting)
if char.Humanoid.RigType == Enum.HumanoidRigType.R15 then
-- R15 tilts side-to-side on the Z axis
rootJoint.C0 = originalC0 * CFrame.Angles(0, 0, angle)
else
-- R6 root joints are rotated differently; side-to-side is on the Y axis
rootJoint.C0 = originalC0 * CFrame.Angles(0, angle, 0)
end
end)
else
toggleBtn.Text = "WOBBLE: OFF"
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
if wobbleConnection then
wobbleConnection:Disconnect()
wobbleConnection = nil
end
if originalC0 and rootJoint then
rootJoint.C0 = originalC0
end
end
end)
Comments
No comments yet
Be the first to share your thoughts!