Now, my problem is that I have a part facing down, specifically -20, 145, -0, but when I use that code to position the camera, it is facing up and rotating incorrectly in general.
The Y rotation is correct, but the X and Z aren’t, and even weirder is that the code works perfectly fine when the X orientation is 0.
The camera orientation is this when X should be -20 and Z should be 0: -6.718, 108.882, 18.882
If you want to use XYZ angles, use fromOrientation instead of fromEulerAnglesXYZ. The latter applies rotations Z first, which is backwards from how orientations are applied.
However, you should probably use fromAxisAngle instead for a number of reasons.
camera.CFrame *= CFrame.fromAxisAngle(Vector3.Y, math.rad(InCameraRotation.Value))
When you have the time, I recommend learning matrices or quaternions and moving away from XYZ rotations. XYZ is here for convenience, but it doesn’t actually contain enough data to handle rotation.