Jiggle script (R6 ONLY)
Key RequiredUniversal

Jiggle script (R6 ONLY)

Universal ScriptMelonHeadMelonHead 1.6K views 12.8K executesUpdated Sep 4, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•334 lines (5548 chars)
local RunService = game:GetService("RunService")

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

local root = character:WaitForChild("HumanoidRootPart")

local torso = character:WaitForChild("Torso")

local rootJoint = root:WaitForChild("RootJoint")

local humanoid = character:WaitForChild("Humanoid")

local TENSION = 210

local DAMPING = 8

local SQUISH_INTENSITY = 0.012

local currentScale = 1

local velocityScale = 0

local lastVelocityY = 0

local originalRootC1 = rootJoint.C1

local objects = {}

local jumpSound = Instance.new("Sound")

jumpSound.SoundId = "rbxassetid://111539020190610"

jumpSound.Volume = 0.4

jumpSound.Parent = root

local landSound = Instance.new("Sound")

landSound.SoundId = "rbxassetid://112358504840457"

landSound.Volume = 0.4

landSound.Parent = root

local function playJumpSound()

	jumpSound:Play()

end

local function playLandSound()

	landSound:Play()

end

local spawnTime = time()

local function setup()

	objects = {}

	for _, v in ipairs(character:GetDescendants()) do

		local isBody = v:IsA("BasePart") and v.Parent == character and v.Name ~= "HumanoidRootPart"

		local isAcc = v:IsA("BasePart") and v.Name == "Handle" and v.Parent:IsA("Accessory")

		if isBody or isAcc then

			local joint

			pcall(function()

				joint = v:FindFirstChildOfClass("Motor6D") or v:FindFirstChildOfClass("Weld")

				if not joint and isBody then

					for _, m in ipairs(torso:GetChildren()) do

						if m:IsA("Motor6D") and m.Part1 == v then

							joint = m

							break

						end

					end

				end

			end)

			local mesh = v:FindFirstChildOfClass("SpecialMesh")

			local meshScale = mesh and mesh.Scale or Vector3.new(1,1,1)

			objects[v] = {

				Size = v.Size,

				Joint = joint,

				C0 = joint and joint.C0 or nil,

				Mesh = mesh,

				MeshScale = meshScale,

				Name = v.Name

			}

		end

	end

end

torso.Touched:Connect(function(hit)

	pcall(function()

		if time() - spawnTime < 1.5 then return end

		if hit:IsDescendantOf(character) then return end

		local relativeVelocity = hit.AssemblyLinearVelocity - root.AssemblyLinearVelocity

		if relativeVelocity.Y < -14 then

			velocityScale = velocityScale - (math.abs(relativeVelocity.Y) * 1.35)

			playLandSound()

		end

	end)

end)

local head = character:FindFirstChild("Head")

if head then

	head.Touched:Connect(function(hit)

		pcall(function()

			if time() - spawnTime < 1.5 then return end

			if hit:IsDescendantOf(character) then return end

			velocityScale = velocityScale - 15

			playLandSound()

		end)

	end)

end

humanoid.StateChanged:Connect(function(_, newState)

	pcall(function()

		if newState == Enum.HumanoidStateType.Jumping then

			velocityScale = velocityScale - 3

			playJumpSound()

		end

		if newState == Enum.HumanoidStateType.Landed then

			velocityScale = velocityScale - 12

			playLandSound()

		end

	end)

end)

setup()

character.DescendantAdded:Connect(function()

	wait(0.1)

	setup()

end)

RunService.RenderStepped:Connect(function(dt)

	pcall(function()

		dt = math.min(dt, 0.033)

		if not root or not root.Parent then return end

		local velocity = root.AssemblyLinearVelocity

		local targetScale = 1 + (velocity.Y * SQUISH_INTENSITY)

		targetScale = math.clamp(targetScale, 0.84, 1.5)

		if lastVelocityY < -10 and velocity.Y >= -1 then

			velocityScale = velocityScale - (math.abs(lastVelocityY) * 0.35)

			playLandSound()

		end

		lastVelocityY = velocity.Y

		local displacement = currentScale - targetScale

		local force = -TENSION * displacement - DAMPING * velocityScale

		force = math.clamp(force, -500, 500)

		if currentScale < 0.88 then

			force = force * 2

		end

		velocityScale = math.clamp(velocityScale + (force * dt), -40, 40)

		currentScale = math.clamp(currentScale + (velocityScale * dt), 0.7, 1.5)

		local xzScale = (currentScale < 1) and (1 + (1 - currentScale) * 0.45) or (1 - (currentScale - 1) * 0.2)

		local originalTorsoHeight = objects[torso] and objects[torso].Size.Y or 2

		for part, data in pairs(objects) do

			if part and part.Parent then

				if part.Size then

					local newSize = Vector3.new(

						data.Size.X * xzScale,

						data.Size.Y * currentScale,

						data.Size.Z * xzScale

					)

					if newSize.X > 0 and newSize.Y > 0 and newSize.Z > 0 then

						part.Size = newSize

					end

				end

				if data.Mesh and data.Mesh.Parent then

					data.Mesh.Scale = Vector3.new(

						data.MeshScale.X * xzScale,

						data.MeshScale.Y * currentScale,

						data.MeshScale.Z * xzScale

					)

				end

				if data.Joint and part ~= torso and data.Joint.Parent then

					local origC0 = data.C0

					if origC0 then

						local yPos = origC0.Y * currentScale

						if data.Name and data.Name:find("Leg") then

							local torsoBottomShift = (originalTorsoHeight * 0.5) * (1 - currentScale)

							yPos = (origC0.Y * currentScale) + torsoBottomShift

						end

						if data.Name and data.Name:find("Arm") then

							local torsoBottomShift = (originalTorsoHeight * 0.35) * (1 - currentScale)

							yPos = (origC0.Y * currentScale) + torsoBottomShift

						end

						pcall(function()

							data.Joint.C0 = CFrame.new(origC0.X, yPos, origC0.Z) * origC0.Rotation

						end)

					end

				end

			end

		end

		if objects[torso] then

			local verticalOffset = (1 - currentScale) * (objects[torso].Size.Y * 0.5)

			if rootJoint and originalRootC1 then

				rootJoint.C1 = originalRootC1 * CFrame.new(0, verticalOffset, 0)

			end

		end

	end)

end)

Features & Information

For anyone who thinks this script was made for sexual purposes, the creator had no sexual intent while making this. However, if you use this script in a bad way, dont blame me or the creator for it, dont use the script if you can't handle the hate that you're gonna get for using this script in a bad way. Credits to eipccats on YouTube

Community Comments (2)

TheQuietMaestroTheQuietMaestroSep 5, 2026

Unfortunately, this is a script that must be placed in startercharacterscripts. You can't actually use this one on an executor that can't modify your scripts on the server. but you CAN put this in your game👀

Replying to @TheQuietMaestro
MelonHeadMelonHeadSep 5, 2026

@TheQuietMaestro oh okay I will port it soon

More Scripts for Universal Scripts