TweenService Does Not Work Properly For A Part

Hello! My TweenService is not working the way I want it, I gave it a Specific position for it to tween to ut the parts rotate and makes it look weird, I have tried to do figure out why this is and came of with a conclusion that the whole map is in an angle. around 45 degrees to be accurate. I have tried to look for similar topics but cannot find it helpful. Is there a way for me to script it so that I do not have to rotate the whole map, I am a beginner scripter so I find the orientation hard to understand, and I think it has something to do with it. Fellow Developers if there is a solution to my problem, then Please help me fix it! Thanks!

This is the normal positions of each part, The dead end is a gate and the green button on the right triggers the tween.

This is what happens in game, the both parts rotate.

This is my script
B = button
G = Gate
BS = Button Start-Position
BE = Button End-Position
GS = Gate Start-Position
GE = Gate End-Position
BST = Button Start-Position Tween
BET = Button End-Position Tween
GST = Button Start-Position Tween
GET = Button End-Position Tween

local TW = game:GetService("TweenService")
local B = script.Parent:FindFirstChild("Button")
local G = script.Parent:FindFirstChild("Gate")

local TweenInformation =,Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, false, 0)

local GS = {CFrame =, 896.294, 1885.022)}

local GE = {CFrame =, 876.17, 1885.022)}

local BS = {CFrame =, 891.401, 1876.934)}

local BE = {CFrame =, 891.401, 1876.78)}

local GST = TW:Create(G,TweenInformation,GS)
local GET = TW:Create(G,TweenInformation,GE)
local BST = TW:Create(B,TweenInformation,BS)
local BET = TW:Create(B,TweenInformation,BE)


You are correct when you assume that your problem has to do with the rotation of the CFrame that you’re tweening, I would recommend doing a deep-dive into the article written by Roblox on it here

I am dead right now, Will do tmr, Thank you!

Looks like you’re rotating it by changing their normal positions, when you can use a rotation. (basically what PR_0B is directing you to)

You may want to use CFrame.Angles instead of!

Note that as said in the article, CFrame.Angles is done in Radins. If you wanna flip the part(s) in degrees then use math.rad

But yeah, you should read up on the article, it’s really helpful