Okay so I am using this function for recoil. However the BaseWeld is also used to tween for the Aiming. While aiming, if you shoot, the BaseWeld will move back to the original position. I'm trying to make it so that the recoil tween will move the BasePart by the stuff below relative to the BasePart's current position instead of moving it back to 0,0,0. This way no matter where the BasePart is, the recoil won't set it back to its original point.
function Recoil()
_G.Animate.tweenWeld(BaseWeld, 0, CFrame.new(0, 0, 3) *CFrame.Angles(math.rad(50), math.rad (o) , math.rad (o) ), 20, true)
wait()
_G.Animate.tweenWeld(BaseWeld, 0, CFrame.new(0, 0, 0), 30, true)
end

3 comments
And the problem is...?
So the BasePart has the arms welded to it. It's used to animate the arms. So when you aim, the BasePart moves the gun's AimPart to the position of the center of the head. The recoil function here moves the CFrame of the BasePart back to it's original position of (0,0,0). So while aiming, it'll basically unaim then recoil. However, the recoil should be present while aiming and while not aiming so I
What it does is Move to CFrame.new(0,0,0) then move backwards 3 units and rotate 50 radians. What I'm trying to do is get it so that Instead of moving to CFrame.new(0,0,0), then moving 3 and 50, to instead use the BasePart's current CFrame and move 3 back, and rotate 50 from the BasePart's current position.