Как сделать zoom камеры с задержкой и возвращением на изначальную позицию Unity2D?

Я пытаюсь сделать скрипт который будет при касании игроком триггера сначала в течении времени ZoomSpeed увеличивать Zoom, потом ждать время ZoomTime, и плавно возвращать камеру к изначальной позиции за время ZoomSpeed, потом уничтожать объект. Вот изначальный код(Прикрепляется на триггер):

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

public class ZoomTrigger : MonoBehaviour
{
    public float Zoom;
    public float ZoomSpeed;
    private float timer;
    public float ZoomTime;
    public bool IsTriggered;
    public Camera Camera;
    private float zoom_per_second;
    private bool IsZoomStarted = false;
    // Start is called before the first frame update
    void Start()
    {
        zoom_per_second = 5-Zoom;
        zoom_per_second /= ZoomSpeed;
    }

    // Update is called once per frame
    void Update()
    {
        if(IsTriggered == true&&IsZoomStarted == false)
        {
            IsZoomStarted = true;
            ZoomProcess();
        }
    }
    void OnTriggerEnter2D(Collider2D collider)
    {
        if(collider.gameObject.CompareTag("Player"))
        {
            IsTriggered = true;
        }
    }
    public void ZoomPlus()
    {
        Camera.orthographicSize -= zoom_per_second*Time.deltaTime;
    }
    public void ZoomMinus()
    {
        Camera.orthographicSize += zoom_per_second*Time.deltaTime;
    }
    public void ZoomProcess()
    {
        if(IsTriggered == true)
        {
            timer+= Time.deltaTime;
            while(timer<=ZoomSpeed)
            {
                timer+= Time.deltaTime;
                ZoomPlus();
            }
            timer=0f;
            while(timer<=ZoomTime)
            {
                timer+=Time.deltaTime;
            }
            timer=0f;
            while(timer<= ZoomSpeed)
            {
                ZoomMinus();
            }
            Destroy(gameObject);
        }
    }
}

Ответы (0 шт):