How to rotate the CFrame of a part welded to my character without affecting the character itself?

I am creating a VFX which is welded to my character’s torso using WeldConstraints and also spins by changing it’s CFrame. The problem I’ve encountered is that this causes to character to spin with the VFX and therefore launch itself into the ozone layer, since they are both welded together. I’ve tried using the older welds and Motor6Ds, but they did not fix the issue.

I need to have this VFX welded to my character as I want it to face the same orientation when the player rotates the character and obviously to have it spinning for the effect itself.

Though I am implementing my VFX system in an all-in-one module, these snippets should be enough to understand my issue

--Code which rotates the CFrame of the VFX (referred as WSClone)
WSSpin = coroutine.wrap(function()
    while true do
        givenData.Instances["WSClone"].CFrame = givenData.Instances["WSClone"].CFrame * CFrame.fromEulerAnglesXYZ (0,.0,03)
--Code which creates the WeldConstraint
local newAttachment ="Attachment") --Local offset from the character
newAttachment.Parent = givenData.Character.Torso
newAttachment.Position =, 0.191, -2.971) --In front of the torso
newAttachment.Orientation =, 180, -0)
newAttachment.Name = "WSAttach"
local newClone = Assets.Objects.HalfCircle:Clone() --VFX Object
newClone.Parent = givenData.Character.Torso
newClone.CFrame =
newClone.Orientation = newAttachment.WorldOrientation
newClone.Transparency = 0
local newWeld ="WeldConstraint")
newWeld.Parent = givenData.Character.Torso
newWeld.Enabled = true
newWeld.Part0 = givenData.Character.Torso
newWeld.Part1 = newClone

I’d attach it to the player with a hinge constraint set to Motor and just let it run without scripts handling it