Not sure, could be intentional but it could also be a bug, in the past I just worked around this issue through hacky means.
Guess its intended
Scratch this, came up with something infinitely better,
local tweenservice = game:GetService("TweenService")
local model = script.Parent
local endcframe = CFrame.new(Vector3.new(0, 5, 0))*CFrame.Angles(0, math.rad(150), 0)
local TweenPositionInfo = TweenInfo.new(1, Enum.EasingStyle.Linear)
local TweenRotationInfo = TweenInfo.new(3, Enum.EasingStyle.Bounce)
local function TweenCFrameModel(model, endcframe, TweenPositionInfo, TweenRotationInfo)
local disconnectevents = false
local primarypart = model.PrimaryPart
local startcframe = primarypart.CFrame
model:PivotTo(endcframe)
local endpos = primarypart.Position
local endrot = primarypart.Orientation
model:PivotTo(startcframe)
for i, v in pairs(model:GetDescendants()) do
if v:IsA("BasePart") and v ~= primarypart then
local offset = primarypart.CFrame:ToObjectSpace(v.CFrame)
local checkformovement
checkformovement = primarypart:GetPropertyChangedSignal("CFrame"):Connect(function()
if not disconnectevents then
v.CFrame = primarypart.CFrame * offset
else
checkformovement:Disconnect()
end
end)
end
end
local postween = tweenservice:Create(primarypart, TweenPositionInfo, {Position = endpos})
local rottween = tweenservice:Create(primarypart, TweenRotationInfo, {Orientation = endrot})
postween:Play()
rottween:Play()
repeat task.wait()
until postween.PlaybackState == Enum.PlaybackState.Completed and rottween.PlaybackState == Enum.PlaybackState.Completed
disconnectevents = true
end
TweenCFrameModel(model, endcframe, TweenPositionInfo, TweenRotationInfo)
No buggy welds, lerp:(), or hacky animation nonsense needed, even works on the server properly unlike my last attempt with welds.
This took me a lot longer than it should and quite frankly I should have figured this out sooner, but hey its here now.
EDIT: As I am testing this I realized that if you run it on the server it looks a little choppy from the client, and running the code in a localscript seems to fix the lag but, again, it wonāt replicate. To be honest I still believe this is most likely your best approach to this quite unique problem,
so I would probably recommend a system (Probably a remotevent) for the server to tell the clients to tween the model and the server would simply just have to update the model on the server to the end position when it finishes.
Otherwise you could keep the tween on the server and simply deal with the lag if you choose that.
Whatever you choose or whatever other solution you come up with I hope this has helped you enough!
Iāll check this out later today, by taking a brief look at the code I think it might for me!
Will update the post when tested, thanks for your help.