As you can see, when the camera is manipulated by a camera part, the crosshair tries to stay in the center by (apparently) applying the inverse cframe of the camera.
I’ve managed to get close results by using Camera: WorldToViewportPoint(), but the crosshair wouldn’t stay centered in third person (the crosshair would kind of follow the character’s torso look vector).
maybe they like make the gui crosshair invisible while reloading and shoot a raycast from the camera and when the raycast hits something they clone a 3d crosshair model from replicatedstorage or similar and just position it to where the raycast hit it orrrrr they have a 3d crosshair welded to the camera in a position that the 3d crosshair looks exactly like the 2d crosshair and they just hide the 2d crosshair while reloading?
Since this topic has been bumped they probably used this constant camera CFrame offset trick to get the original camera CFrame before all the camera shake is applied.