Problem with Tweening Models

I’m not sure wheter this is a bug or scripting mistake. That’s why im first posting here.

I made a Model consisting of three parts: a Main Part and two roots and welded everything together with WeldConstraints.

grafik

grafik

The script looks like as follows:

local TService = game:GetService("TweenService")

local Cube = script.Parent
local Block = Cube.Block
local Main = Block.Main
local Root1 = Block.Root1
local Root2 = Block.Root2
local TweenGoal = {Position = Main.Position}
local TweenTime = TweenInfo.new(5)
local BlockSlide = TService:Create(Root1,TweenTime,TweenGoal)

Main.Anchored = false
Root2.Anchored = false

wait(5)

BlockSlide:Play()

When I try to rotate the MainPart and the other root around one root everything works perfectly fine, but as soon as I try to tween a root only the root tweens and the rest of my Model stays in place although unanchored, non-colliding and welded to the tweening root.

I tried rewelding a ton of times also with a script in-game that permwelded the parts together and changed the position a few times, but no success :neutral_face:

My question now is simple: Why?

Thanks in advance :v:

:crown: Nova_MrRoyal :crown:

It’s not your WeldConstraints that are improper, it’s either your model or your code. Check the surfaces of the parts of your model then reassess your code and see if you can make any changes. There’s no video of your problem on hand, just text, so it’s hard to see what’s happening.

There is no way to ‘tween’ a model in Roblox. A sneaky way to get around this, is to create a new Instance.new("CFrameValue"), set it to your model’s PrimaryPartCFrame, then tween the CFrameValue to your desired CFrame, all while the Value.Changed event is connected to setting the model’s PrimaryPartCFrame to the CFrameValue.Value.

I wrote a tutorial on “tweening models” that discourages the use of this method when wanting to tween models due to the issues it presents.

Your post is pretty vague. I got a few questions about it:

Check for what?

What should I rethink with my code? I already tried to change different variables and broke it down to the real basics.

As I didn’t found a proper solution, I asked.

I made a video with the Roblox Record function, but it is a .wmv file which I sadly can’t upload.

I now solved the problem by replacing the Vector3 value (Main.Position) with a CFrame (Main.CFrame). For all future users, the script now looks like this:

local TService = game:GetService("TweenService")

local Cube = script.Parent
local Block = Cube.Block
local Main = Block.Main
local Root1 = Block.Root1
local Root2 = Block.Root2
local TweenGoal = {CFrame = Main.CFrame}
local TweenTime = TweenInfo.new(5)
local BlockSlide = TService:Create(Root1,TweenTime,TweenGoal)

Main.Anchored = false
Root2.Anchored = false

wait(5)

BlockSlide:Play()

My question now is, why tweening only works with CFrame and not a Vector3 value.