Move and zoom target camera at the same time

Hi guys,
I found this awesome script for a target camera, but I want to add an iTween animation to it, where if a user presses a keyboard key, the camera moves to a new target position and zooms in at the same time. I figured out how to get it to move, but I can’t get it to zoom in while its moving…

Here is the script

using UnityEngine;

public class camera : MonoBehaviour
{
 
     public Transform target;
     public Vector3 targetOffset;
public Transform moveTarget;

     public float distance = 5.0f;
     public float maxDistance = 20;
     public float minDistance = .6f;
     public float xSpeed = 200.0f;
     public float ySpeed = 200.0f;
     public int yMinLimit = -80;
     public int yMaxLimit = 80;
     public int zoomRate = 40;
     public float panSpeed = 0.3f;
     public float zoomDampening = 5.0f;
     private float xDeg = 0.0f;
     private float yDeg = 0.0f;
     private float currentDistance;

     float distanceBetween;
     private float desiredDistance;
     private Quaternion currentRotation;
     private Quaternion desiredRotation;
     private Quaternion rotation;
     private Vector3 position;
     void Start() { Init(); }
     void OnEnable() { Init(); }
     public void Init()
     {
         //If there is no target, create a temporary target at 'distance' from the cameras current viewpoint
         if (!target)
         {
             GameObject go = new GameObject("Cam Target");
             go.transform.position = transform.position + (transform.forward * distance);
        
         }
         distance = Vector3.Distance(transform.position, target.position);
         currentDistance = distance;
         desiredDistance = distance;
         //be sure to grab the current rotations as starting points.
         position = transform.position;
         rotation = transform.rotation;
         currentRotation = transform.rotation;
         desiredRotation = transform.rotation;
         xDeg = Vector3.Angle(Vector3.right, transform.right);
         yDeg = Vector3.Angle(Vector3.up, transform.up);
     }
     /*
      * Camera logic on LateUpdate to only update after all character movement logic has been handled.
      */
     void LateUpdate()
     {

    
        //Camera Orbit
 
         if (Input.GetMouseButton(0))
         {
             xDeg += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
             yDeg -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
   
             //Clamp the vertical axis for the orbit
             yDeg = ClampAngle(yDeg, yMinLimit, yMaxLimit);
   
             desiredRotation = Quaternion.Euler(yDeg, xDeg, 0);
             currentRotation = transform.rotation;
             rotation = Quaternion.Lerp(currentRotation, desiredRotation, 2f);
             transform.rotation = rotation;
         }


//NEED SOLUTION HERE!
         // Press B to move camera target AND zoom in on the target - how ?

             if (Input.GetKeyUp(KeyCode.B)) {
              iTween.MoveTo(target.gameObject,moveTarget.position,0.8f);        

            }

 
    
         // affect the desired Zoom distance if we roll the scrollwheel

         desiredDistance -= Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomRate * Mathf.Abs(desiredDistance);
         //clamp the zoom min/max
         desiredDistance = Mathf.Clamp(desiredDistance, minDistance, maxDistance);
         // For smoothing of the zoom, lerp distance
         currentDistance = Mathf.Lerp(currentDistance, desiredDistance, Time.deltaTime * zoomDampening);
         // calculate position based on the new currentDistance
         position = target.position - (rotation * Vector3.forward * currentDistance + targetOffset);
         transform.position = position;

    
     }
     private static float ClampAngle(float angle, float min, float max)
     {
         if (angle < -360)
             angle += 360;
         if (angle > 360)
             angle -= 360;
         return Mathf.Clamp(angle, min, max);
     }
}

Will appreciate all the help I can get, thanks.

Go to your camera component. You know that “Field of View” property? Mess with the Field of View slider a little bit: this changes how much the camera is zoomed in. You can use a coroutine to zoom. You’ll also need your variables to play a role in this process (such as zoomRate). Alternatively, you could manipulate the camera so that it actually moves towards to object to zoom in. I prefer using the FoV property.

For having movement and zooming at the same time, you could use async to run two methods at the same time: see this.