Как сделать 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);
}
}
}