Problem with Tweening Models

I followed this tutorial (Introduction to Tweening Models) on how to tween models. I completed all the steps however it didn’t work as expected.

The root was tweening perfectly, but the rest of the model wasn’t following the root as intended, and was just stuck in place. Everything but the root was unanchored and everything was welded.

Would you mind providing video of workspace and video of the tween?

Is that really necessary? I feel as if I explained it enough. I’m heading to bed soon so I’ll probably do it tomorrow.

Just picture the model that is supposed to be tweening, not tweening. But the root is. If that makes any sense

That leaves me with no information, but I think I have an idea why it is happening, are you setting the welds properties? ECT Weld0, Weld1

did you weld it yourself or did you use a plugin? sometimes doing it manually can work out bad and since you havent given us any videos or code we cant do anything to help you.

I think you need welds to move tween parts in a model. I could be wrong though

I used a slightly modified version of the code in the tutorial I linked to automate the welding. Doing it manually would take forever.

local model = workspace.Model
local Part1 = model.PrimaryPart

for _, Part0 in pairs(model:GetDescendants()) do
	if Part0:IsA("BasePart") and not (Part0 == Part1) then
		local WeldConstraint ="WeldConstraint")
		WeldConstraint.Part0 = Part0
		WeldConstraint.Part1 = Part1
		WeldConstraint.Parent = WeldConstraint.Part0
		Part0.Anchored = false

Part1.Anchored = true
Part1.CanCollide = false

Something like that. So yes everything should be welded properly.

Heres a video:

And the script handling the tweens:

local TweenService = game:GetService("TweenService")

local model = workspace["M.D.S.E.U.P"]
local squillies = workspace.squillies:GetChildren()
local modelRoot = model.PrimaryPart

local tweenInfo =, Enum.EasingStyle.Linear, Enum.EasingDirection.In, 0, false)

local function GoToSquilly(x, z)
	local nyoom = TweenService:Create(modelRoot, tweenInfo, {
		Position =, modelRoot.Position.Y, z)
	local drop = TweenService:Create(modelRoot, tweenInfo, {
		Position =, modelRoot.Position.Y, 0)


while true do
	local randomSquilly = squillies[math.random(1, #squillies)]
	GoToSquilly(randomSquilly.Position.X, randomSquilly.Position.Z)

Apparently it wasn’t working because I was using Vector3 instead of CFrame. Got it to work now.

I feel like it might be useful to note why I chose to use CFrame in the tutorial and not position. I’ve noticed that a lot of problems regarding model movement for those who follow that tutorial stem from trying to modify the code and using position instead of CFrame. Welds don’t quite appreciate that.