Local Script Issues with Gui and Camera

Hey, Devs!

So I’ve been having this problem recently and I’m not sure how to fix it. Basically, a sidebar (frame) is supposed to show up and the local player’s current camera is supposed to take the CFrame of another part.
However, the frame doesn’t appear at all (even when I change the position without tweening) and the camera only changes when the player’s character resets.
Anyways, here’s the code:

--Services
local TweenService = game:GetService("TweenService")
local SG = game:GetService("StarterGui")

--Variables
local ScreenGui = script.Parent.Parent
ScreenGui.Parent = game.Players.LocalPlayer.PlayerGui
local Frame = SG:WaitForChild("ScreenGui"):WaitForChild("Frame")

--Camera Manipulation
local cam = game.Workspace.CurrentCamera
local StartCam = game.Workspace:WaitForChild("StartCam")

cam.CameraType = Enum.CameraType.Scriptable
cam.CFrame = StartCam.CFrame

Frame.Position = UDim2.new(-0.5,0,0,0)
print(Frame.Position)

wait(3)

Frame:TweenPosition(
UDim2.new(0,0,0,0),
Enum.EasingDirection.In,
Enum.EasingStyle.Elastic,
2,
false,
nil
)

print(Frame.Position)

local FrameTween = TweenService:Create(Frame, TweenInfo.new(2,Enum.EasingStyle.Elastic,Enum.EasingDirection.Out,0,false,0), {Position = UDim2.new(0,0,0,0)})
FrameTween:Play()

print(Frame.Position)

Some things to note:
I know that I’ve used two tweening methods, but neither of them work. The frame’s position is always -0.5,0,0,0.

Even when I tell the script to make the frames’s position 0,0,0,0, the frame isn’t visible but the output tells me that the frame’s position is 0,0,0,0.

I put the ScreenGui in the playerGui because I’ve heard of issues like this and everyone says to put the ScreenGui into playerGui.

Thanks for the help! I’ll try to answer any questions you all have.