Я пытаюсь повернуть камеру вокруг определенного объекта. С добавлением, что на некоторой определенной c части поворота, и в течение определенного угла движение должно быть медленным .
Иллюстрированное представление ниже, зеленая зона - зона замедленного движения, красная - применяемая нормальная скорость:

Для достижения это, я использую Transform.RotateAround(Vector3 point, Vector3 axis, float angle)
метод
Итак, предполагая, что медленная скорость равна половине первоначальной скорости, а angleOfSlowMotionZone равна 90º, как на картинке, я делаю следующее:
Рассчитайте время, необходимое камере для прибытия в медленную зону (зеленая зона):
timeToArriveToSlowZone = (270 - (angleOfSlowMotionZone / 2)) / speed;
Рассчитайте время, необходимое для завершения медленной зоны:
timeToEndSlowZone = angleOfSlowMotionZone / slowSpeed;
Окончательно рассчитайте время, чтобы сделать полный оборот:
timeToFullTurn = timeToArriveToSlowZone + timeToEndSlowZone;
Затем я вызываю сопрограмму, чтобы сделать движение, как:
IEnumerator Rotation()
{
second = 0;
while(true)
{
second += Time.deltaTime;
if(second >= timeToFullTurn)
second = 0;
newSpeed = (second <= timeToArriveToSlowZone || second >= timeToArriveToSlowZone + timeToEndSlowZone) ? speed : slowSpeed;
transform.RotateAround(targetGO.transform.position, Vector3.up, newSpeed * Time.deltaTime);
yield return null;
}
}
Моя проблема в том, что на каждом ходу момент замедления движения немного по-другому. Как я могу исправить это, чтобы быть ТОЧНО как угол предложил?