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. На этих понтонах, словно на водных подушках, наша уточка будет держаться на воде. Количество понтонов зависит от размера объекта, и для нашего актора добавим четыре понтона.

В настройках понтона указываем координаты расположения понтона относительно актора (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  — скрыть понтоны
  

Комментарии

Популярные сообщения