Can you have more than one TweenInfo on one tween?

Hiya, I have this tween, which essentially updates the orientation, as well as the position, but i would want the position to tween slower than the orientation, is there any way of going about that?

Make one tween for the position, and then another tween for the rotation. The rotation can be defined using a rotation matrix with CFrame.fromEulerAnglesYXZ() or CFrame.Angles(), but you can also get the rotation desired by doing:

local rotationCFrame = goalCFrame - goalCFrame.Position

To rotate whatever it is you’re rotating, you should use a BodyGyro. Then, tween the BodyGyro.CFrame to the rotationCFrame. To tween the position, just tween the Position of the Part.

Thanks for the reply,

Just to clarify on what I meant, I’ve listed a GIF below, where it shows a part that I’d like to constantly to be moving, along with the other part:
https://gyazo.com/eb9bc526b16ff261d353fb4e9d3f7fe3

I’m not familiar with BodyGyros, but I’ve attempted to try what you meant, I’m not sure if I have done it right however, I’ve listed the script below:

local Rotate = script.Parent:WaitForChild("Brush")
local Moving  = script.Parent:WaitForChild("Moving")

local TweenService = game:GetService("TweenService")
local RotateTween = TweenInfo.new(.5, Enum.EasingStyle.Linear, Enum.EasingDirection.Out,-1,false,0)
local MovingInfo = TweenInfo.new(3, Enum.EasingStyle.Linear, Enum.EasingDirection.Out,-1,true,0)

local RotateTween = TweenService:Create(Rotate.BodyGyro, RotateTween, {
	CFrame = Rotate.BodyGyro.CFrame * CFrame.Angles(0,math.rad(180),0), 
	
})


local MoveTween = TweenService:Create(Moving, MovingInfo,{
	CFrame = script.Parent:WaitForChild("End").CFrame
})

local RotateMoveTween = TweenService:Create(Rotate, MoveTween, {
	Position = script.Parent.BrushEnd.Position, 

})

RotateTween:Play()
MoveTween:Play()
RotateMoveTween:Play()

Actually ignore that first answer, I just realized BodyGyro is deprecated now. RIP BodyGyro.
Instead, you can change the Rotation property of a BasePart.

I made an example part in workspace, and using this code:

local TweenService = game:GetService("TweenService")

local RotateInfo = TweenInfo.new(.5, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, false, 0)
local MovingInfo = TweenInfo.new(3, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0)


local MovingPart = workspace.MovingPart
local InitCFrame = MovingPart.CFrame


-- you might have to mess with the axis of rotation for this one
local RotationTween = TweenService:Create(MovingPart, RotateInfo, {Rotation = Vector3.new(360, 0, 0)})
local MovingTween = TweenService:Create(MovingPart, MovingInfo, {Position = InitCFrame.Position + Vector3.new(0, 5, 0)})
MovingTween:Play()
RotationTween:Play()

It looks like this:

1 Like