Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 110
В моей игре есть кнопочка "Посмотреть на выбранный объект".
По её нажатии:

1) Спауню CameraActor в месте нахождения камеры моего персонажа, Attach'у её CameraComponent к спринарму перса и переключаюсь SetViewTargetWithBlend'ом на неё.
2.1) камера поворачивается к выбранной цели,
2.2) при этом если необходимо, поворачивается и спрингарм (чтобы не получилось, что на пути от камеры к цели оказался наш герой),
3) после чего камера отвязывается от спрингарма и отправляется в полёт к цели,
4) по окончании которого спауню у цели спрингарм и цепляю CameraComponent нашей заспауненной ещё в сам.начале камеры к нему.
5) новый спрингарм цели на тике проворачиваю, чтобы он был лежал на векторе, соединяющем камеру моего перса с целью.

Ну и по отжатии кнопочки - всё полетело/покрутилось обратно.

Проблема: в некоторых точках границы описанных фаз движения возникают видимые рывки камеры. Они заметны только если и персонаж и цель быстро движутся. Если оба неподвижны, всё отрабатывает красиво.

Прошу: Кто имел дело с подобной задачей по камере, подскажите пожалуйста, как избежать этих рывков. Уже пробовал перед перепривязкой камеры спрингармам и камере на всякий случай вручную задавать location / Rotation, и без этого пробовал... Пробовал явно отвязывать камера-компонент от спрингарма (когда это логически надо бы сделать) и пробовал не делать этого - результат почти не меняется. Т.е. проблема однозначно полностью не уходит, как бы я не плясал с бубнами.

Сам блупринт-код сюда публиковать не буду - уж оч. они объёмные и сложные для понимания получились (не на 1 десяток экранов), учитывая ещё и то, что фазы движения камеры частично накладываются друг на друга.

Но суть проблемы, думаю, не в конкретном коде, ибо перепробовал уже кучу вариаций - от проблемы не спасает.
Скорее всего есть принципиально проблемное место в этой логике, чтобы указать на которое, не обязательно смотреть на код.

Подскажите пожалуйста, где копать?

PS: необходимость в сложном коде вместо простого вызова SetViewTargetWithBlend, возникла, т.к. движение камеры не только неравноскоростное во времени, но и состоит из нескольких движений, накладывающихся др.на друга для пущей красивости)) (Например, камера ещё заканчивая поворачиваться, уже плавно начинает лететь к цели и т.п.)
Последний раз редактировалось SaShka 19 май 2015, 17:06, всего редактировалось 1 раз.
Аватара пользователя
Пользователь
Сообщения: 110
empty
Аватара пользователя
Администратор
Сообщения: 1581
Эмм.. А что вообще нужно сделать? Почему просто не заспаунить камеру рядом с объектом, который нужно показать и не переключиться на неё таргетблендом?
_________________
Просьба, не писать вопросы по движку в ЛС. Я не единственный, кто знает UE4, и поэтому пишите на форум или в группу.
Аватара пользователя
Пользователь
Сообщения: 110
Flakky,
SaShka писал(а):
PS: необходимость в сложном коде вместо простого вызова SetViewTargetWithBlend, возникла, т.к. движение камеры не только неравноскоростное во времени, но и состоит из нескольких движений, накладывающихся др.на друга для пущей красивости)) (Например, камера ещё заканчивая поворачиваться, уже плавно начинает лететь к цели и т.п.)

Т.е. усложнение для большей красоты: полёта камеры по сложной траектории, в последствии возможно прикручу ещё облёт препятствий на её пути к цели, ... Т.е. задача была не просто переключиться на др. камеру, а дать игроку возможность насладиться полётом вместе с камерой от одной цели к другой по сложной траектории.
Аватара пользователя
Тех. администратор
Сообщения: 367
Общая рекомендация - упрощать код, использовать Matinee если возможно. Отслеживать и править что-то в 10 экранах блупринта очень неэффективно.
А вообще, проверьте логику вашего кода - если объекты движутся, возможно, вы неправильно задаёте движение камеры, в смысле ваше уравнение движения не учитывает перемещение объектов. Другими словами: ваша камера приезжает куда-то, откуда объект уже уехал, а на следующем этапе уже начинает движение из его позиции, и прыгает.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница