Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
player = Players.LocalPlayer
camera = .CurrentCamera
character, humanoid, rootPart, rootJoint
originalRootC0 = .()
jumpOffset =
jumpVelocity =
(char)
character = char
humanoid = char:()
rootPart = char:()
rootJoint = rootPart:()
(char:() char.LowerTorso:())
rootJoint
originalRootC0 = rootJoint.C0
humanoid.StateChanged:((_, newState)
newState == .HumanoidStateType.Jumping
jumpVelocity = -
newState == .HumanoidStateType.Landed
fallSpeed = .(rootPart.AssemblyLinearVelocity.Y)
impact = .(fallSpeed / , , )
jumpVelocity = -impact
)
player.Character (player.Character)
player.CharacterAdded:(setupCharacter)
WALK_INTENSITY =
WALK_FREQ =
RUN_INTENSITY =
RUN_FREQ =
TILT_INTENSITY =
LERP_SPEED =
tickCounter =
lastCameraRotation = camera.CFrame
currentCameraTilt =
currentBobOffset = .()
currentBodyTilt = .()
RunService.RenderStepped:((deltaTime)
humanoid rootPart humanoid.Health <=
velocity = rootPart.AssemblyLinearVelocity * .(, , )
currentSpeed = velocity.Magnitude
isGrounded = humanoid.FloorMaterial ~= .Material.Air
currentSpeed > isGrounded
isRunning = currentSpeed >
intensity = isRunning RUN_INTENSITY WALK_INTENSITY
freq = isRunning RUN_FREQ WALK_FREQ
tickCounter += deltaTime * freq
bobX = .(tickCounter * ) * (intensity * )
bobY = .(.(tickCounter)) * intensity
currentBobOffset = currentBobOffset:(.(bobX, bobY, ), LERP_SPEED)
tickCounter =
currentBobOffset = currentBobOffset:(.(), LERP_SPEED)
springStiffness =
springDamping =
force = -springStiffness * jumpOffset - springDamping * jumpVelocity
jumpVelocity += force * deltaTime
jumpOffset += jumpVelocity * deltaTime
deltaCFrame = camera.CFrame:(lastCameraRotation)
_, yawDelta = deltaCFrame:()
lastCameraRotation = camera.CFrame
targetCamTilt = .(yawDelta * , -TILT_INTENSITY, TILT_INTENSITY)
currentCameraTilt = currentCameraTilt + (targetCamTilt - currentCameraTilt) * LERP_SPEED
camera.CFrame = camera.CFrame
* .(currentBobOffset.X, currentBobOffset.Y + jumpOffset, )
* .(, , currentCameraTilt)
rootJoint
localVel = rootPart.CFrame:(velocity)
targetBodyX = -localVel.Z *
targetBodyZ = localVel.X *
targetBodyY = -yawDelta *
currentBodyTilt = currentBodyTilt:(.(targetBodyX, targetBodyY, targetBodyZ), LERP_SPEED)
bodyBobY = (currentBobOffset.Y * ) + (jumpOffset * )
bodyBobX = currentBobOffset.X *
rootJoint.C0 = originalRootC0
* .(bodyBobX, bodyBobY, )
* .(currentBodyTilt.X, currentBodyTilt.Y, currentBodyTilt.Z)
)A lightweight Roblox LocalScript providing smooth walk and run camera bobbing, mouse-turn camera tilt, spring-driven jump and landing impact without camera pitch distortion, and procedural character body leaning for both R6 and R15 rigs.

Universal