How can I simultaneously tween a model's CFrame and CFrame.angles?

I’m trying to make a spinning projectile that also tweens to a specific position, thing is, it’s a model so I can’t use “Position” and “Orientation” like normal or else only a singular part of the model will move. I tried this approach but it didn’t seem to work

--spin
	task.spawn(function()
		for i =1, 180 do
			if scytheClone then
				scytheClone:SetPrimaryPartCFrame(scytheClone.PrimaryPart.CFrame * CFrame.Angles(0, 4, 0))
				print(scytheClone.PrimaryPart.CFrame)
			else
				break
			end

			task.wait(1/180)
		end
	end)
	
	--move
	local posTween = tweenService:Create(scytheClone.PrimaryPart, TweenInfo.new(2), {CFrame = target.HumanoidRootPart.CFrame})
	posTween:Play()

Anyone know how I can make it move to the target while also spinning? I saw a post similar with a marked solution but it didn’t work at all for me. Any help is appreciated, thanks!

1 Like

Try using :GetPivot() and :PivotTo(). These two either get or set the CFrame of a model, so for example do:

scytheClone:PivotTo(scytheClone:GetPivot() * CFrame.Angles(0, 4, 0))

Edit: accidentally skipped over the tweening part, but you could lerp with the above method instead or try the answer below me

You could use CFrameValue and Vector3Value objects to Tween Rotation and Position separately because since they are Instances you can Tween their ‘Value’ properties and listen to the ‘Changed’ signal and apply the Transform based on that:

image