Unreal Engine 4
https://uengine.ru/forum/

Поворот камеры при пересекающейся линии взгляда
https://uengine.ru/forum/viewtopic.php?f=3&t=75207
Страница 1 из 1

Автор:  farwy [ 06 июн 2020, 01:52 ]
Заголовок сообщения:  Поворот камеры при пересекающейся линии взгляда

Здравствуйте уважаемые.
Подскажите пожалуйста, как решить проблему.
Имеем игрока с видом сверху с постоянным наклоном камеры на spring arm 60 градусов (top down).
При попытке подойти спиной к любому высокому объекту, камера начинает приближаться вплотную к игроку, т.к. объект перекрывает видимость камеры и игрока.
А надо, чтобы камера оставалась высоко и при этом было видно игрока. Соответственно, нужно сделать чтоб в самом начале приближения камеры в следствии приближающегося объекта, Spring Arm менял вращение с 60 до, например, 90 градусов. И наоборот, когда игрок отходит от объекта, значение вращения, возвращалось обратно к 60 градусам, при этом, сами значения изменялись плавно, т.е. постепенно, чем ближе к стене, тем выше градус, чем дальше от стены тем ниже, возвращаясь с 90 к 60.
Таким образом, игрок будет всегда виден, благодаря повороту spring arm в вертикальное состояние.
Попробовал изобразить это на рисунках.
Рис.1 это то что есть.
Рис.2 это то что происходит при приближении к объекту.
Рис.3 это то как нужно.
Изображение

Автор:  farwy [ 07 июн 2020, 02:10 ]
Заголовок сообщения: 

В первом видео показано то, что сейчас есть.
https://www.youtube.com/watch?v=0QYRS03aamE&feature=youtu.be

Во втором, то как нужно сделать, только в нем я сам нажимаю кнопки G и T для изменения вращения вручную с 60 до 90 градусов и обратно, когда немного отхожу от стены.
https://www.youtube.com/watch?v=uBMnOF3vvhA&feature=youtu.be

Так это выглядит в блюпринте:
Изображение

Вот как сделать это автоматически?
Максимум, что я смог сделать со своим скудным знанием БП и поиском в интернете, это определить расстояние от камеры до игрока. Это есть на видео сбоку, показываются циферки, начиная с 600- это стандартная длина.

И теперь, надо взять это значение и каким то образом, когда оно достигнет длины, например 500, то начиная с этого момента, включить изменение вращения по оси Y у камеры. Т.е. чтоб оно было например такое:
При длине 500, угол камеры 60°
При длине 499, угол камеры 61°
При длине 498, угол камеры 62°
При длине 497, угол камеры 63°
И так допустим до момента, когда будет длинна 470 а угол камеры 90°.
Ну и в обратную сторону.

И есть одна закавырка.
Если повернуть камеру на 90, то между игроком и камерой уже не будет объекта, и таким образом расстояние вернется к изначальному значению 600. И получается, отойдя от стены, ее длина не будет изменяться и она так и останется под углом 90 градусов, а надо чтоб вернулась на угол 60.
Может тогда, это можно сделать как то иначе?

Автор:  icms [ 08 июн 2020, 13:59 ]
Заголовок сообщения: 

Map Range Clamped в помощь!

Автор:  Prytaleks [ 08 июн 2020, 15:02 ]
Заголовок сообщения: 

farwy писал(а):
И есть одна закавырка.
Если повернуть камеру на 90, то между игроком и камерой уже не будет объекта, и таким образом расстояние вернется к изначальному значению 600. И получается, отойдя от стены, ее длина не будет изменяться и она так и останется под углом 90 градусов, а надо чтоб вернулась на угол 60.
Может тогда, это можно сделать как то иначе?


Я такое делал давно, но без нахождения угла от 60 до 90, только 60 или 90, с двумя спринг армами, один основной с камерой, второй для возврата с пустышкой.

также можешь взять себе в помощь пару спринг армов с пустышками компонентами, один для того что бы знать когда от камеры на 60 к персонажу, нет препятствий, второй для нахождения правильного градуса, третий спринг арм с камерой, он же основной, должен плавно принимать настройки, от от первого или второго, когда нужно, и плавненько менять свои значения.
Все это можно сделать и без дополнительных спрингармов, но тогда тебе нужно хорошо дружить с математикой.
Также тебе понадобится использовать таймер или евент тик, запускать лучи от пустышек спринг армов к персонажу, и получать данные.

спрингармы для помощи с математикой, таймеры с лайнтрэйсами - бокстрэйсами для обнаружения, таймлайны для лерпа, или похожее на евентике, необходимо будет использовать.

У меня получилось два таймера, один работал когда камера 60, другой когда 90, по очереди.

Автор:  jeka3d [ 21 июл 2020, 01:22 ]
Заголовок сообщения: 

на тик или таймер повесить лайнтрейс от камеры до персонажа. если луч блокирован увеличить текущий угол спринг арма на 1, если луч не блокирован то уменьшить текущий угол на 1
мин макс угол надо ограничить, и поиграть лерпом на предмет скорости и плавности всего этого дела

Автор:  Prytaleks [ 03 авг 2020, 11:41 ]
Заголовок сообщения:  Re:

jeka3d писал(а):
на тик или таймер повесить лайнтрейс от камеры до персонажа. если луч блокирован увеличить текущий угол спринг арма на 1, если луч не блокирован то уменьшить текущий угол на 1
мин макс угол надо ограничить, и поиграть лерпом на предмет скорости и плавности всего этого дела

если все делать так коротко, то камеру заглючит на первом перекрытии.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/