How can I achieve a wall climb animation on my game?

Hi, I have an air vent attached in to a wall, I want when I press E my character plays a climb animation and enter inside,

I have tryed with 3 cameras (a climb animation camera, a bottom view displayed when i’m inside the air vent, and the regular one it is the the default on first person controller) I’m playing the climb animation, swaping to the bottom view camera and setting the position of player were climbing camera animation finishes, this look so weird like hard trasnactions between cameras and player falling until it reach ground…

Can anyone give me a tips or hints on how to achieve this better?

Actual code

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;



public class climbing : MonoBehaviour {

    private bool canClimb;
    private bool waitClimb;
    public Animator anim;
    public Camera climbingCam;
    public Camera regularCam;
    public Camera ventCam;
    public Text escalarVentilacion;

    // Use this for initialization
    void Start () {
        waitClimb = true;
    }

    void FixedUpdate()
    {
        RaycastHit hit;
        Ray landingRay = new Ray(transform.position, transform.forward);

        if (Physics.Raycast(landingRay, out hit, 8))
        {
            if (hit.collider.tag == "Climb" && hit.distance < 2)
            {
                escalarVentilacion.text = "Pulsa 'E' para entrar en el conducto de ventilación";
                canClimb = true;
            }
            else
            {
                escalarVentilacion.text = "";
                canClimb = false;
            }
        }

    }

    // Update is called once per frame
    void Update () {

        if (canClimb && waitClimb && Input.GetKeyDown(KeyCode.E))
        {
            waitClimb = false;
            regularCam.depth = 0;
            climbingCam.depth = 1;
            anim.SetBool("Climb", true);
            StartCoroutine(afterClimb());
        }
    }

    IEnumerator afterClimb ()
    {
        yield return new WaitForSeconds(2);
        anim.SetBool("Climb", false);  
        transform.position = climbingCam.transform.position;
        ventCam.transform.rotation = climbingCam.transform.rotation;
        ventCam.transform.position = climbingCam.transform.position;
        ventCam.depth = 1;
        climbingCam.depth = 0;
    }

    //private void OnTriggerEnter(Collider other)
    //{
    //    if (other.tag == "Climb")
    //    {
    //        canClimb = true;
    //    }
      
    //}

    //private void OnTriggerExit(Collider other)
    //{
    //    canClimb = false;
    //}

}

If you’re trying to achieve Ubisoft-grade fusion of first- or third-person transition animation events, that is some tricky stuff to do, and to do well. Most games at the indie developer scene will simply fade to black, or teleport you into the vent, usually just using a different camera rig for when you’re in the tunnel.

If you really want to try this heavy animation lift, the first thing you want to do is set up a camera and film yourself climbing up onto a ledge, then put a gopro on your forehead and repeat it. Or perhaps have a friend do the camera work of filming you climbing onto a ledge. You’ll quickly understand how tricky what you are proposing is, and understand how amazingly good some of these modern game animators are who pull this off regularly!

I don’t thnk it’s that hard to swap camera 1 on camera 2 with same rotation and position, and then translate your character in to it tbh… also I have the animation of the first person camera climbing the wall, its just a Y axis movement, just need some help putting all together that doesnt look so weird… but btw maybe a fade black can work if I dont get what i’m trying