Найти в Дзене
Аня про Unreal Engine

Unreal Engine 5: Настраиваем объект, чтобы он плавно покачивался на волнах

Примечание: гайд написан на примере UE 5.6, но подходит и для других версий движка Всем привет! Мы уже включили плагин Water и создали океан. Давайте разберемся, как заставить любой объект держаться на воде. В комплекте с плагином есть пример плавучего куба — BP_BuoyancyExample. Попробуем повторить его логику и заставим плавать уточку, созданную CinekR9. Шаг 1. Создадим блюпринт
Add → Blueprint Class → Actor. Назовем его, например, BP_BuoyancyDuck. Шаг 2. Настроим логику в блюпринте
Во вкладке Components добавим два компонента: Static Mesh и Buoyancy, который позволит нашей уточке быть плавучей. 2.1 Настроим Static Mesh:
— в Components перетянем Static Mesh на место DefaultSceneRoot, чтобы сделать его корневым, поскольку Buoyancy работает только с root-компонентом;
— в Details в слоте Static Mesh выберем меш уточки, а также поставим галочки напротив Simulate Physics и Mass (kg). 2.2 Настроим Buoyancy
В Details у компонента найдем параметр Pontoons. На этих понтонах, словно на водных
Примечание: гайд написан на примере UE 5.6, но подходит и для других версий движка

Всем привет! Мы уже включили плагин Water и создали океан. Давайте разберемся, как заставить любой объект держаться на воде. В комплекте с плагином есть пример плавучего куба — BP_BuoyancyExample. Попробуем повторить его логику и заставим плавать уточку, созданную CinekR9.

Шаг 1. Создадим блюпринт
Add → Blueprint Class → Actor. Назовем его, например, BP_BuoyancyDuck.

Шаг 2. Настроим логику в блюпринте
Во вкладке Components добавим два компонента: Static Mesh и Buoyancy, который позволит нашей уточке быть плавучей.

2.1 Настроим Static Mesh:
— в Components перетянем Static Mesh на место
DefaultSceneRoot, чтобы сделать его корневым, поскольку Buoyancy работает только с root-компонентом;
— в Details в слоте
Static Mesh выберем меш уточки, а также поставим галочки напротив Simulate Physics и Mass (kg).

2.2 Настроим Buoyancy
В Details у компонента найдем параметр
Pontoons. На этих понтонах, словно на водных подушках, наша уточка будет держаться на воде. Количество понтонов зависит от размера объекта, и для нашего актора добавим четыре понтона.

В настройках понтона указываем координаты расположения понтона относительно актора (Relative Location) и радиус самого понтона (Radius). Чтобы определить координаты, можно временно добавить компонент Scene, подвигать его во вьюпорте, меняя перспективу, и выбрать подходящие точки. Затем эти значения просто переносим в Relative Location понтонов.

Определяем координаты расположения понтонов с помощью компонента Scene
Определяем координаты расположения понтонов с помощью компонента Scene

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

  • Mass (kg) у StaticMesh — снизить массу. Например, поставить 50 вместо 100.
  • Buoyancy Damp — сгладить качку на волнах. Я поставила значение 650. Это коэффициент затухания, который масштабирует сопротивление движения объекта в воде по оси Z и помогает устранять резкие скачки актора на волнах, делая колебания более плавными.
  • Apply Drag Forces in Water — добавить водное сопротивление (включить галочку). После этого утка ведет себя на волнах плотнее и тяжелее, движения замедляются, вращение становится мягче, и она перестает скользить по поверхности.

Внутри Apply Drag Forces in Water доступны:

  • Drag Coefficient — сила замедления движения объекта в воде. Для тонкой настройки можно увеличить второй слой — Drag Coefficient 2.
  • Angular Drag Coefficient — сила замедления угловой скорости (вращения) объекта.
  • Max Drag Speed — максимальная скорость, при достижении которой сила сопротивления не будет увеличиваться.

Другие полезные параметры:

  • Buoyancy Coefficient — сила, с которой понтоны выталкивают объект вверх.
  • Buoyancy Ramp Min Velocity, Buoyancy Ramp Max Velocity, Buoyancy Ramp Max — применяются при изменении скорости течения или скорости объекта; помогают сгладить поведение при нарастании скорости, чтобы объект естественно держался на воде.
  • Apply River Forces — группа параметров для рек: сила течения, боковое давление и влияние берегов.

Шаг 3. Добавляем уточку на уровень
Нажимаем Compile, закрываем блюпринт и перетаскиваем его на сцену.

Шаг 4. Настраиваем океан
У актора океана в Details → Collision Presets ставим WaterBodyCollision.

Визуализация понтонов (консоль)

r.Water.DebugBuoyancy 1 — показать понтоны
r.Water.DebugBuoyancy 0 — скрыть понтоны

-3