Как заставить игрока двигаться по орбите вокруг точки в космосе, сохраняя при этом способность игрока двигаться вперед / назад?

Избавьтесь от длинного вопроса, я представлю схему того, что я собираюсь сделать:

Пример

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

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

Example2

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

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


person Shadowfang    schedule 21.05.2018    source источник


Ответы (2)


Хорошо, я разобрался.

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

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

Иерархия

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

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

Вращение

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

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

Движение

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

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

Ввод двигателя

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

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

Конец видео с результатами

person Shadowfang    schedule 17.08.2018

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

Мне кажется немного странным, что вы разделили своего игрока-актера и компонент камеры. Обычно «пешка» игрока содержит компоненты сетки и камеры для одного игрока.

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

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

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

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

person TheBrain    schedule 08.06.2018
comment
Хорошо, я только что воссоздал тот же сценарий с пешкой вместо основного актера. Настройка выглядит следующим образом: корень сцены ›пружинный рычаг› статическая сетка ›пружинный рычаг› камера. Оба пружинных рычага настроены так, чтобы игнорировать обрезку камеры, иначе они не будут смещать сетку и камеру должным образом. Первоначальная проблема с бесплатной камерой, похоже, решена, но теперь в игре не происходит никакого движения. Я хотел бы добавить, что я также попытался переключить цель в чертеже на корень сцены по умолчанию и включить / выключить наследование значений вращения для пружинных рычагов. - person Shadowfang; 18.06.2018