How to make smooth first person arms?

Yep this is exactly it, that tutorial is really good I learnt a lot from it. This should be the answer.

However if you are interested in only the spring portion I have isolated it and created an script to play around with. (With my own CFrame rotation method which is similar yet different)

Example code here see edit 3, lots of variables to play around with and tune it:

However @RazorWinds_Dev was also on the right track

Yep the tutorial also does that. Though the tutorial uses mouse delta which also coincidentally correlates with the camera movement.

		-- Let's get some mouse movement!
		local mouseDelta = game:GetService("UserInputService"):GetMouseDelta()
		self.springs.sway:shove(Vector3.new(mouseDelta.x / 200,mouseDelta.y / 200)) --not sure if this needs deltaTime filtering
--vs my wut CFrame approach
	local differenceCF = previousGoalCFrame:ToObjectSpace(goalCFrame)
	local axis, angle = differenceCF:ToAxisAngle()
	local angularDisplacement = axis*angle
	previousGoalCFrame = goalCFrame
	local springForce = angularDisplacement*deltaSensitivity
	viewmodelSpring:Impulse(springForce)
2 Likes