The first print statement gives you the position of the humanoid root part of SpecialRig. The second print statement gives you the same thing, but as the position component of a new cframe. The third print statement gives you the position of the primary part of the clone of TestRocket.
Sorry for not noticing that. That does make things a lot more confusing and I don’t actually know the answer to why. Might have something to do with the fact that setting cframes won’t check for overlaps between parts and physics will then make it make sense, but that’s only a guess. I only know that the documentation suggests to use the PivotTo method instead, which should be easy enough to implement. Might look something along the lines of changing rocket.PrimaryPart.CFrame = CFrame.new(game.Workspace.SpecialRig.HumanoidRootPart.CFrame.Position) to rocket.PrimaryPart:PivotTo(CFrame.new(game.Workspace.SpecialRig.HumanoidRootPart.CFrame.Position))
Or putting rocket.PrimaryPart.Anchored = true above that line so that it is anchored before the physics solver tries to do anything funny.