c# scrolling zoom, lock X&Y in current position?

I am using a main camera to zoom into my gameObject using the scroll wheel. I’ve got the script working, but when I play, the main camera x and y values snap to 0 instead of staying where they are located in space. I need it a little off center for my GUI panel. How do I keep the camera position values at x = 0.28, y = -0.2 while I zoom?

public class DirectionalButtons : MonoBehaviour 
{
    public float distance;
    private float sensitivityDistance = -7.5f;
    private float damping = 2.5f;
    private float min = -4;
    private float max = -2;
    private Vector3 zdistance;
 
    void  Start ()
    {
		distance = -3f;
		distance = transform.localPosition.z;		
	}
    void  Update ()
    {
		distance -= Input.GetAxis("Mouse ScrollWheel") * sensitivityDistance;
		distance = Mathf.Clamp(distance, min, max);
		zdistance.z = Mathf.Lerp(transform.localPosition.z, distance, Time.deltaTime * damping);
		transform.localPosition = zdistance;
    }
}

The problem is, that you assign a zdistance vector, which by default have x and y set to 0. You have to use actual x and y from localPosition, by reading current local position, modifying z value, and then assigining it back:

distance -= Input.GetAxis("Mouse ScrollWheel") * sensitivityDistance;
distance = Mathf.Clamp(distance, min, max);
zdistance = transform.localPosition; // <- reading local position
zdistance.z = Mathf.Lerp(transform.localPosition.z, distance, Time.deltaTime * damping);
transform.localPosition = zdistance;

Here’s how I fixed it:

{
    public float distance;
    private float sensitivityDistance = -7.5f;
    private float damping = 2.5f;
    private float min = -4;
    private float max = -2;
    private Vector3 zdistance;
	
 
    void  Start ()
    {
		distance = -3f;
		distance = transform.localPosition.z;		
	}
    void  Update ()
    {
		distance -= Input.GetAxis("Mouse ScrollWheel") * sensitivityDistance;
		distance = Mathf.Clamp(distance, min, max);
		zdistance.z = Mathf.Lerp(transform.localPosition.z, distance, Time.deltaTime * damping);
		transform.localPosition = zdistance;
		Vector3 pos = transform.position;
		pos.x = .2f;
		pos.y = -.15f;
		transform.position = pos;	
    }
}