Задача следующего характера.
Рис1.
Есть игрок, который выпускает луч из точки P. Луч сталкивается с препятствием. Получаем точку A.
Так же есть камера, которая висит где то над игроком в позиции C. Камера наводится на точку столкновения луча с поверхностями.
На рисунке она наведена на точку А.
Рис2.
Игрок ели смещает свой луч вверх, луч пролетает над препятствием и сталкивается с новым. Получаем новую точку B.
Камера фокусируется на новой точке B.
Рис3.
Проблема в том что при наведении камеры на новую точку. Происходит резкий смена угла камеры.
Что приводит к страшным рывкам.
Необходимо чтобы камера переноводилась на новую точку плавно разгоняясь и плавно останавливаясь(по типу Vector3.SmoothDamp), независимо от расстояния на котором находится новая точка
Я пробовал решить задачу разными способами. Но пока чёт безуспешно. Или я тупил в четыре часа ночи или хз.
1)
Я пробовал интерполировать лерпом позицию фокуса в 3д пространстве.
2)
Из мыслей о том, что скорость перенаведения фокуса не должна зависеть от дистанции между А и B. Но скорость должна зависеть от дистанции проекций А и B на камеру
- пытался спроецировать точки на экран(рис4), потом их Vector2.SmoothDamp, потом пытался из полученной Vector2 точки сделать пространственную... Почти успех. но кривой, лагучий и дерганный, так что провал.
3)
Кватарнионы пока не трогал, но вроде там нет аналога SmoothDamp.
Чета я не попробовал сам Vector3.SmoothDamp применить к пространственным позициям, щас пока пишу вопрос понял...но хз получится или нет, что-то с него... хотя, по моему не то будет. Походу надо через экранные проекции интерполировать.
Какие у вас могут быть предложения?