В моей игре есть кнопочка "Посмотреть на выбранный объект".
По её нажатии:
1) Спауню CameraActor в месте нахождения камеры моего персонажа, Attach'у её CameraComponent к спринарму перса и переключаюсь SetViewTargetWithBlend'ом на неё.
2.1) камера поворачивается к выбранной цели,
2.2) при этом если необходимо, поворачивается и спрингарм (чтобы не получилось, что на пути от камеры к цели оказался наш герой),
3) после чего камера отвязывается от спрингарма и отправляется в полёт к цели,
4) по окончании которого спауню у цели спрингарм и цепляю CameraComponent нашей заспауненной ещё в сам.начале камеры к нему.
5) новый спрингарм цели на тике проворачиваю, чтобы он был лежал на векторе, соединяющем камеру моего перса с целью.
Ну и по отжатии кнопочки - всё полетело/покрутилось обратно.
Проблема: в некоторых точках границы описанных фаз движения возникают видимые рывки камеры. Они заметны только если и персонаж и цель быстро движутся. Если оба неподвижны, всё отрабатывает красиво.
Прошу: Кто имел дело с подобной задачей по камере, подскажите пожалуйста, как избежать этих рывков. Уже пробовал перед перепривязкой камеры спрингармам и камере на всякий случай вручную задавать location / Rotation, и без этого пробовал... Пробовал явно отвязывать камера-компонент от спрингарма (когда это логически надо бы сделать) и пробовал не делать этого - результат почти не меняется. Т.е. проблема однозначно полностью не уходит, как бы я не плясал с бубнами.
Сам блупринт-код сюда публиковать не буду - уж оч. они объёмные и сложные для понимания получились (не на 1 десяток экранов), учитывая ещё и то, что фазы движения камеры частично накладываются друг на друга.
Но суть проблемы, думаю, не в конкретном коде, ибо перепробовал уже кучу вариаций - от проблемы не спасает.
Скорее всего есть принципиально проблемное место в этой логике, чтобы указать на которое, не обязательно смотреть на код.
Подскажите пожалуйста, где копать?
PS: необходимость в сложном коде вместо простого вызова SetViewTargetWithBlend, возникла, т.к. движение камеры не только неравноскоростное во времени, но и состоит из нескольких движений, накладывающихся др.на друга для пущей красивости)) (Например, камера ещё заканчивая поворачиваться, уже плавно начинает лететь к цели и т.п.)
Последний раз редактировалось
SaShka 19 май 2015, 17:06, всего редактировалось 1 раз.