Viewportframe makes object offset

Hey! Everything is fine, but when I try to rotate the hat it looks funny and is offset.

Picture:
image

The hat as you can tell is offset, by a-lot.
Script:

local Frame = script.Parent
local Duck = game.Workspace.Ducks:FindFirstChild(script.Parent.Parent.DuckName.Value):Clone()
Duck.Position = Vector3.new(0, 0, 0)
Duck.Orientation = Vector3.new(0, -180, 0)
for _,v in pairs(Duck:GetChildren()) do
	if v:IsA("Part") or v:IsA("BasePart") or v:IsA("MeshPart") then
		v.Orientation = Vector3.new(0, -180, 0)
	end
end
Duck.Parent = Frame.FakeWorld
local Camera = Instance.new("Camera")
Frame.CurrentCamera = Camera
Camera.Parent = Frame

Camera.CFrame = CFrame.new(Vector3.new(0, 0.70, 3.275), Duck.Position)
local count = -180

function rotate()
	
	for _,v in pairs(Duck:GetDescendants()) do
		if v:IsA("Part") or v:IsA("BasePart") or v:IsA("MeshPart") then
			v.Orientation = Vector3.new(0, count, 0)
		end
	end
	
	Duck.Orientation = Vector3.new(0, count, 0)
	count += 2
	
	if Duck.Orientation == Vector3.new(0, -180, 0) then
		script.Parent.DestroyEvent:FireServer(tostring(game.Players.LocalPlayer.Name), tostring(script.Parent.Parent.Parent.Parent.Name))
	end
end

while wait() do
	rotate()
end

The hat is welded to the duck btw.

2 Likes