Движение персонажа по сплайну в Unreal Engine 4

Движение персонажа по сплайну в Unreal Engine 4 — небольшой урок о том, как заставить вашего персонажа двигаться по сплайну.

1. Сперва создайте новый проект и используйте Third Person шаблон для вашего проекта.
2. Откройте папку «Blueprints» в вашем ThirdPersonGame и создайте новый Blueprint Class тип Actor.Для данного урока назовите его «SplineBP».

3. Теперь откройте этот Blueprint.Использую вкладку «Add Component» , в верхнем левом углу, найдите и добавьте «Scene component».Перетащите Scene component на Default Scene Component , чтобы заменить стандартный Sphere в вьюпорте вашего блупринта.Ещё раз нажмите «Add Component» найдите «spline» и добавьте его.Скомпилируйте и сохраните блупринт.

4. Откройте ваш level blueprint и перетащите свежесозданный Spline BP на ваш уровень.Теперь выделите сплайн точку и используя «ALT + drag» для добавления точек на ваш сплайн.Теперь вы можете создавать предопределённый путь в вашем уровне используя этот Spline BP.

5. Найдите блупринт ThirdPersonCharacter в папке Blueprint и откройте его.Вы увидите дефолтный функционал данного блупринта связанного с передвижением персонажа.Мы будем работать с «Movement input» секцией в event graph, что бы наш персонаж двигался по сплайну.
Создадим 2 переменные. Первая будет «Spline BP» референсом которой будет наш Spline BP. Вторая переменная будет называться «SplineDistance» тип которой float; она будет хранить расстояние, пройденное по пути сплайна.

6. Откройте Character Blueprint и из ноды Spline BP вытяние/найдите ноду «Get World Location at Distance along Spline» и выберите её. Добавьте в граф свежесозданную переменную «SplineDistance» и соедините с полем Distance.
Точно такие же действия следует провести с нодой «Get World Rotation at distance along Spline».

7.Возьмите «Capsule Component» и найдите «Set World Location» и «Set World Rotation» и соедините как показано на скрине ниже. Эта связка будет изменять положение вашего персонажа.Поскольку мы хотим, чтобы обновление положения происходили постоянно, нужно сделать обновление данных внутри события на каждый тик. Найдите ноду «Input axis move Forward» находящуюся по дефолту в Movement Input разделе вашего Third Person Character Blueprint. Добавьте ноду “Event Tick” и установите Scale value в “Add Movement Input” = 1 (посмотрите скрин готового бп, если не понятно,что и куда соединять).

8.Это позволит постоянно обновлять положение вашего персонажа. Но пока что, персонаж не будет передвигаться, т.к. переменная «Spline Distance» зафиксированная в значении 0.0 и поэтому каждый кадр, ваш персонаж использует координаты начала сплайна.Поэтому нужно назначить дистанцию, на которое будет передвигаться персонаж по сплайну каждый кадр.

9. В итоге, ваш блупринт будет выглядеть примерно так, как представлено на скрине ниже.

10.Скомпилируйте и сохраните.Всё ещё наблюдается ошибка, т.к. Spline BP не имеет значения и вообще пуст. Откройте ваш «Spline BP Blueprint» и перейдите во вкладку event graph. Здесь, в «Event Begin Play» установите значение переменной Spline BP в Third Person Character.
Про связь между блупринтами, можете почитать здесь.

Ну вот и всё. Компилируйте и сохраняйте.

Перевёл на русский — RedComrade
Оригинал статьи. Там же автор статьи может ответить на возникшие вопросы.

P.s. Если вам понравился данный материал, клацните по рекламке, тем самым вы скажете «спасибо».


Читайте также: