В ходе решения проблем с камерой изучил интересную функцию Mathf.Lerp. Википедия по этому поводу говорит так:
Интерполя́ция, интерполи́рование — в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.
Я-же скажу проще — это способ растянуть по времени какое-то ваше действие — то ли перемещение к точке, то ли поворот.
Но есть один немаловажный момент. Нельзя просто написать
transform.position = Vector3(Mathf.Lerp(0, 50, 5*Time.TimeDelta), 0, 0);
Такой код не переместит объект в позицию (50, 0, 0), а сделает только один шаг по этому перемещению.
Поэтому Lerp нужно вызывать до тех пор, пока цель не будет достигнута, или просто заданное время.
Обычно интерполяцию используют в функции Update():
void Update(){ if(transform.position!=Vector3(50, 0, 0)) { transform.position = Vector3(Mathf.Lerp(0, 50, 5*Time.TimeDelta), 0, 0); }
Т.е. интерполяцию нужно вызывать до тех пор, пока объект не займёт предназначенное для него место, а не один раз.
Более подробно можно почитать в разделах справки Unity3D Mathf.Lerp, Vector3.Lerp (перемещение) и Quaternion.Lerp вращение.
Удачной интерполяции вам в пространстве ! =)