Limbs aren't fixed to torso when animation is playing

Hi developers,

EDIT: I’ve figured out that the torso is fine, it’s just that the limbs aren’t attached to the torso when the idle animation is playing.

A while ago a made a script to make the torso go up and down with the camera (like what you see in third person shooter games), and it worked fine up until yesterday. For some reason the limbs aren’t following the upper torso. See for yourself


what it should be doing


how it is right now

In the past two weeks I have not changed this script, so this might be something on roblox’s end.

Also I checked on older place file where this should be working and it still isn’t.

Here’s the script (the part thats relevant is the RenderStepped event, also this runs on the client):

function cam:init()

	self.active = true

	print("cam")
	char = player.Character or player.CharacterAdded:Wait()
	hum = char:WaitForChild("Humanoid")
	waist = char.UpperTorso:WaitForChild("Waist")
	root = char:WaitForChild("HumanoidRootPart")

	hum.CameraOffset = Vector3.new(4, 0, 0)
	hum.AutoRotate = false
	camera.CameraSubject = hum

	local waistOrigin = waist.C0
	self.waistOrigin = waist.C0

	uis.MouseDeltaSensitivity = self.sensitivityOrigin * 0.5

	local deltaX, deltaY
	local deltaProcessed = nil

	self.RS = game:GetService("RunService").RenderStepped:Connect(function(dt)
				
		uis.MouseBehavior = Enum.MouseBehavior.LockCenter

		if deltaProcessed then
			deltaX, deltaY = nil, nil
		end

		camera.CFrame = CFrame.new(camera.CFrame.Position, camera.CFrame * CFrame.new(deltaX or 0, deltaY or 0, -2000).Position)

		if deltaX then
			deltaProcessed = true
		end

		waist.C0 = waistOrigin * CFrame.Angles(camera.CFrame.LookVector.Unit.Y, 0, 0)

		local newRootCF = CFrame.new(root.CFrame.Position, root.CFrame.Position + Vector3.new(camera.CFrame.LookVector.X, 0, camera.CFrame.LookVector.Z))
		local tweeninfo = TweenInfo.new(0.05, Enum.EasingStyle.Sine, Enum.EasingDirection.Out)
		local tween = ts:Create(root, tweeninfo, {["CFrame"] = newRootCF})
		tween:Play()

	end)

	uis.InputChanged:Connect(function(input, processed)

		local delta = input.Delta
		deltaX, deltaY = delta.X, -delta.Y

	end)

	task.spawn(function()
		while self.active do
			--remotes.tiltAt:FireServer(waistOrigin * CFrame.Angles((camera.CFrame.LookVector).Unit.Y, 0, 0))

			task.wait(0.1)
		end
	end)

end

If you want to see it for yourself you can find it here: TPS - Roblox

thanks in advance for any help anyone gives me

1 Like