moving the camera smoothly to players current position in unity

I’m trying to move the camera after the player is teleported to a new location so the camera pulls out from its current location and then moves in to the players new position in a smooth motion.

Ive tried the animation and it automatically moves in spite of me add a trigger to start the animation. I modelled it on a set of door animations i found online.

If anyone has any tips or knows of any tutorials that could help me i would be very grateful

use this script on your camera. Its by far the best smooth follow script.

 using UnityEngine;
    using System.Collections;
    
    public class SmoothFollow : MonoBehaviour {
        
    	// The target we are following
    	public Transform target;
    	// The distance in the x-z plane to the target
    	public float distance = 10.0f;
    	// the height we want the camera to be above the target
    	public float height = 5.0f;
    	// How much we 
    	public float heightDamping = 2.0f;
    	public float rotationDamping = 3.0f;
    
    	// Place the script in the Camera-Control group in the component menu
    	[AddComponentMenu("Camera-Control/Smooth Follow")]
    
    	void LateUpdate () {
    		// Early out if we don't have a target
    		if (!target) return;
    
    		// Calculate the current rotation angles
    		float wantedRotationAngle = target.eulerAngles.y;
    		float wantedHeight = target.position.y + height;
    
    		float currentRotationAngle = transform.eulerAngles.y;
    		float currentHeight = transform.position.y;
    
    		// Damp the rotation around the y-axis
    		currentRotationAngle = Mathf.LerpAngle(currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
    	
    		// Damp the height
    		currentHeight = Mathf.Lerp(currentHeight, wantedHeight, heightDamping * Time.deltaTime);
    
    		// Convert the angle into a rotation
    		var currentRotation = Quaternion.Euler(0, currentRotationAngle, 0);
    	
    		// Set the position of the camera on the x-z plane to:
    		// distance meters behind the target
    		transform.position = target.position;
    		transform.position -= currentRotation * Vector3.forward * distance;
    
    		// Set the height of the camera
    		transform.position = new Vector3(transform.position.x,currentHeight,transform.position.z);
    	
    		// Always look at the target
    		transform.LookAt(target);
    	}
    }

thanks for the help, ill try both suggestions and see what is best for my needs