В принципе, я согласен с приведенным выше ответом Фатти.Вы можете просто использовать Coroutine, как показано ниже
IEnumerator PerformCameraMovement(Transform transformToMove,Vector3 fromPos,Vector3 toPos,float time)
{
float i = 0;
float rate = 1 / time;
while (i<1)
{
i += Time.deltaTime * rate;
transformToMove.position = Vector3.Lerp(fromPos,toPos,i);
yield return 0;
}
}
здесь, в вашем случае, transformToMove
- это преобразование вашей камеры, fromPos
- это положение, откуда камера должна начать переход, toPos
это место, куда должна достигнуть камера, и, наконец, time
это количество времени, необходимое для перевода камеры fromPos
в toPos
Сопрограммы работают как поток.
Просто вызовите этот сопрограмм, используя StartCoroutine(PerformCameraMovement(cameraTransform,cameraTransform.position,Vector3.zero,2.0f));
и разместив его там, где требуется.
Теперь в приведенном выше случае камера переместится из своего исходного положения в Vector3.ноль (начало координат) ровно через 2 секунды.
Я бы посоветовал избегать использования обновления для перехода.Это просто не сработает.
Если вам нужно более глубокое понимание сопрограмм, просто просмотрите этот блог ниже http://www.theappguruz.com/blog/how-to-use-coroutines-in-unity