Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 19
Здравствуйте уважаемые.
Подскажите пожалуйста, как решить проблему.
Имеем игрока с видом сверху с постоянным наклоном камеры на spring arm 60 градусов (top down).
При попытке подойти спиной к любому высокому объекту, камера начинает приближаться вплотную к игроку, т.к. объект перекрывает видимость камеры и игрока.
А надо, чтобы камера оставалась высоко и при этом было видно игрока. Соответственно, нужно сделать чтоб в самом начале приближения камеры в следствии приближающегося объекта, Spring Arm менял вращение с 60 до, например, 90 градусов. И наоборот, когда игрок отходит от объекта, значение вращения, возвращалось обратно к 60 градусам, при этом, сами значения изменялись плавно, т.е. постепенно, чем ближе к стене, тем выше градус, чем дальше от стены тем ниже, возвращаясь с 90 к 60.
Таким образом, игрок будет всегда виден, благодаря повороту spring arm в вертикальное состояние.
Попробовал изобразить это на рисунках.
Рис.1 это то что есть.
Рис.2 это то что происходит при приближении к объекту.
Рис.3 это то как нужно.
Изображение
Аватара пользователя
Пользователь
Сообщения: 19
В первом видео показано то, что сейчас есть.
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.
Может тогда, это можно сделать как то иначе?
Аватара пользователя
Пользователь
Сообщения: 469
Map Range Clamped в помощь!
_________________
Project SKIT
Аватара пользователя
Пользователь
Сообщения: 4069
farwy писал(а):
И есть одна закавырка.
Если повернуть камеру на 90, то между игроком и камерой уже не будет объекта, и таким образом расстояние вернется к изначальному значению 600. И получается, отойдя от стены, ее длина не будет изменяться и она так и останется под углом 90 градусов, а надо чтоб вернулась на угол 60.
Может тогда, это можно сделать как то иначе?


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

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

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

У меня получилось два таймера, один работал когда камера 60, другой когда 90, по очереди.
Аватара пользователя
Пользователь
Сообщения: 138
на тик или таймер повесить лайнтрейс от камеры до персонажа. если луч блокирован увеличить текущий угол спринг арма на 1, если луч не блокирован то уменьшить текущий угол на 1
мин макс угол надо ограничить, и поиграть лерпом на предмет скорости и плавности всего этого дела
Аватара пользователя
Пользователь
Сообщения: 4069
jeka3d писал(а):
на тик или таймер повесить лайнтрейс от камеры до персонажа. если луч блокирован увеличить текущий угол спринг арма на 1, если луч не блокирован то уменьшить текущий угол на 1
мин макс угол надо ограничить, и поиграть лерпом на предмет скорости и плавности всего этого дела

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


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

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