UE4 - Простой способ сфокусировать и сфокусировать камеру на выбранном объекте с планом? Как ярлык F в редакторе - PullRequest
0 голосов
/ 21 февраля 2020

Я хочу разработать функциональность, в которой пользователь сможет нажимать кнопку, которая перемещает фокус камеры на выбранный объект и изменяет положение камеры (с фиксированным значением поля зрения) для правильного кадрирования объекта.

В лицо, я хочу воспроизвести поведение ярлыка F в редакторе:

  • В редакторе вы можете выбрать объект
  • Вы можете нажать клавишу F
  • Камера движется, поместите выбранный объект в центр вида и отрегулируйте расстояние (длину руки), чтобы сделать весь объект видимым.

Существует ли простой способ воспроизвести это в проекте? Я на самом деле делаю тригонометрические вещи и использую ограничивающий размер, но я уверен, что есть лучший способ. Я не хочу воссоздавать функцию, которая может быть уже доступна (и уже разработана в редакторе).

Изображение: поведение в редакторе, которое я хочу воспроизвести в игре enter image description here

1 Ответ

0 голосов
/ 02 марта 2020

Ограничивающие рамки могут быть полезны, но в этом случае вы захотите узнать центр ограничивающей рамки, если у вашего актера нет правильного центра (который можно решить, используя компонент сцены как root в иерархии актера), чтобы у вас была хорошая точка привязки для фокусировки.

Затем вам потребуется угол и расстояние, чтобы установить новое местоположение камеры. Возьмите свой новый круг в качестве центра (либо путем вычисления центра ограничительной рамки, либо с помощью GetActorLocation), затем вы установите трансформацию камеры в определенной точке пространства, вычисляя местоположение с помощью синуса и косинуса из предоставленного угол.

Если вы используете SetActorLocation или Мировое преобразование напрямую, камера будет прыгать. Чтобы смягчить это, проверьте текущее местоположение камеры, вычислите новое и создайте сплайн, используя эти две точки в пространстве. Таким образом, вы можете плавно перемещать камеру с помощью переменной скорости, GetWorldDeltaSeconds и GetLocationAndRotationAlongSpline.

...