Player tilting like crazy when welding stuff

I am welding a spin effect to my character, but I tilt rapidly when I play an animation while its welded.: Example: https://gyazo.com/3920db262ab6cf38c1d4bf0e1db38039
It’s massless and cancollide is set to false, yet it still happens. Here is the code

local function spinweld(character)
	local Char = character
	local plr = game.Players:GetPlayerFromCharacter(Char)
	coroutine.resume(coroutine.create(function()
		local part = game.ReplicatedStorage.Stuff.Spin:Clone()
		part.Massless = true
		part.CanCollide = false
		local weld = Instance.new("Weld"); weld.Parent = part; weld.Part0 = part; weld.Part1 = character:WaitForChild("Torso")
		part.Parent = workspace.Map.Effects
		coroutine.resume(coroutine.create(function()
			for i = 1, 800 do wait(.01)
				if not part:IsDescendantOf(workspace.Map) then break end
				if plr:WaitForChild("Backpack"):WaitForChild("StatusEffects"):FindFirstChild("Stun") then part:Destroy() return end
				part.CFrame = part.CFrame * CFrame.Angles(0,0,.5)
			end
		end))
		local tween = TweenService:Create(part, TweenInfo.new(1.2, Enum.EasingStyle.Sine, Enum.EasingDirection.Out, 0, false, 0),{Size = Vector3.new(12.624, 4.504, 12.574)}); tween:Play()
		wait(.6)
		local tween = TweenService:Create(part, TweenInfo.new(.6, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut, 0, false, 0),{Transparency = 1}); tween:Play()
		tween.Completed:Wait()
		part:Destroy()
	end))
end

I found related topics that can help you: