Как заставить орбитальное движение вокруг точки в пространстве, сохраняя при этом способность игрока двигаться вперед / назад? - PullRequest
0 голосов
/ 21 мая 2018

Слишком долгий вопрос, я приведу диаграмму того, для чего я иду:

Example

Красный квадрат представляетперсонаж, синий прямоугольник представляет камеру, зеленая точка представляет центр «сцены», а черный круг - сама сцена.

Что я хочу, так это, по сути, заблокировать движение игрока вокруг «центр сцены, так что каждый раз, когда вы двигаетесь влево или вправо, вы более или менее вращаетесь вокруг указанного центра.Однако я также хочу, чтобы игрок мог двигаться вперед и назад в / из центра.Имейте в виду, я хочу, чтобы камера всегда оставалась позади игрока.Я перепробовал много разных методов, и последний из них следующий:

Example2

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

По общему признанию, я довольно новичок в Unreal Blueprints, поэтому любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 18 августа 2018

Хорошо, я понял это.

Вот настройка, необходимая, если кто-то еще хочет что-то подобное.

Для самого игрока вам понадобится что-то вроде этого:

Hierarchy

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

Для ротационного Blueprint вам понадобится следующее:

Rotation

Целью является то, что вы назвали корневой сеткой.(Шахта называлась Центром) Перетащите ее из иерархии.

Для движения вперед / назад вам понадобится:

Movement

Цель - это то, что вы назвали пружинным рычагом.(Я оставил свой в качестве SpringArm по умолчанию). Опять же, просто перетащите его из иерархии.

Настройки в настройках проекта:

Engine Input

Да, мои данные обратны тем, что вы думаете.Я чувствовал, что быстрее было просто поменять местами входные данные вместо того, чтобы регулировать то, что вызывало движение назад.(Вероятно, это просто ориентация сферы.) Кроме того, вы заметите, что у меня для входов w и s установлено значение 5 или -5 вместо 1 или -1.Это связано с тем, что в противном случае движение было медленным.Я уверен, что есть исправление, которое не включает изменение масштаба входной оси, но, честно говоря, у меня действительно не будет причины изменять значения в любой точке моего проекта.Если это когда-нибудь произойдет, где мне нужно, я уверен, что есть обходной путь для изменения значений из чертежей в любом случае.

Конечный результат:

Конечный результат Видео

0 голосов
/ 08 июня 2018

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

Я считаю, что этоНемного странно, что вы разделили бы своего игрока и игрока.Обычно, игрок "пешка" содержит сетку и компоненты камеры для одного игрока.

Я бы предложил вам сделать следующее:

  • Создать актера игрока (например, "пешка")или "символьный" класс)
  • Создайте следующую иерархию компонентов:

    Корневая сцена -> Пружинный рычаг -> Скелетная или статическая сетка -> Пружинный рычаг -> камера

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

...