Где duration - время в секундах, продолжительность вращения камеры, angleDeg - угол в градусах на который камера будет отклонена от направления взгляда игрока, к которому она в итоге должна вернуться, direction - направление, в котором будет происходить наклон.
На примере это всё выглядит так, с помощью угла, а точнее тангенса угла наклона, мы вычисляем длину направляющего вектора, суммируем его с вектором нашего взгляда и получаем результирующий вектора направления камеры:
Добавлю что тряска камеры через position лучше подходит для 2д игр, где камера всегда смотрит сбоку или сверху, вдали от объектов игрового мира. Для 3д игр, особенно для игр от третьего лица лучше всегда использовать тряску камеры через rotation, чтобы камера всегда оставалась на месте и не улетала, например, в стену, если персонаж находится в узком коридоре.
Соглашусь. Думаю идеальным вариантом будет улучшить тряску камеры, добавив туда тряску через вращение. И сделать два параметра разброса настраиваемыми. То есть разброс позиции и разброс углов вращения.
Комментарий недоступен
А потом просто берём и накатываем Cinemachine, где всё это уже реализовано, удобно и бесплатно) По крайней мере для простых задач подходит отлично
Да. Но мне эта задача показалась достаточно интересной, чтобы её разобрать и написать статью. Я думаю, полезно уметь решать такие задачи, если вдруг это будет не Unity и готового решения под руками не окажется. Unity в таких ситуациях хорош из-за скорости реализация и демонстрации результата.
Комментарий недоступен
Вы Правы. Исправил в тексте статьи. Только в названии оставил.