local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer -- GUI Setup (Only do this once) local gui = Instance.new("ScreenGui") gui.Name = "BoingGui" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local button = Instance.new("TextButton") button.Size = UDim2.new(0, 50, 0, 50) button.Position = UDim2.new(0.5, -25, 0.5, -25) button.BackgroundColor3 = Color3.new(1, 0.6, 0.1) button.Text = "Boing!" button.Draggable = true button.Active = true button.Parent = gui -- Debounce local canBoing = true -- Spin Function local function applySpin(hrp) local spin = Instance.new("BodyAngularVelocity") spin.AngularVelocity = Vector3.new( math.rad(math.random(-720, 720)), math.rad(math.random(-720, 720)), math.rad(math.random(-720, 720)) ) spin.MaxTorque = Vector3.new(math.huge, math.huge, math.huge) spin.P = 10000 spin.Name = "SpinEffect" spin.Parent = hrp task.delay(0.5, function() spin:Destroy() end) end -- Setup Boing Logic for a character local function setupCharacter(character) local humanoid = character:WaitForChild("Humanoid") local hrp = character:WaitForChild("HumanoidRootPart") -- Create sound local boingSound = Instance.new("Sound") boingSound.SoundId = "rbxassetid://9118823109" boingSound.Volume = 1 boingSound.Parent = hrp -- Boing Effect local function boingPlayer() if not character or not humanoid then return end humanoid.PlatformStand = true local direction = Vector3.new( math.random(-20, 20), math.random(40, 60), math.random(-20, 20) ) hrp.Velocity = direction applySpin(hrp) canBoing = false task.delay(0.5, function() canBoing = true end) end -- Connect Button button.MouseButton1Click:Connect(boingPlayer) -- Touch Bounce hrp.Touched:Connect(function(hit) if not canBoing then return end if humanoid.PlatformStand then canBoing = false boingSound:Play() hrp.Velocity = Vector3.new(0, 40, 0) applySpin(hrp) task.delay(0.4, function() humanoid.PlatformStand = false end) task.delay(0.5, function() canBoing = true end) end end) end -- Handle initial character if player.Character then setupCharacter(player.Character) end -- Handle respawn player.CharacterAdded:Connect(setupCharacter)