Как сделать «пьяную физику» на Unreal Engine 4

Всем привет! В этой статье я поделюсь опытом использования “Physical Animation Component”, с помощью которого я добился эффекта “пьяной физики” в моей весёлой игре про пьяные драки "Drunken Fist 🍺👊 Totally Accurate Beat 'em up"

Physical Animation - это метод симуляции покадровой скелетной анимации с помощью физики. Идея заключается в том, что физический движок пытается повторить положение ключевых точек из покадровой анимации, используя только физические силы.

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

Анимация удара с использованием "Physical Animation" Александр Дударев

Этот приём также полезен для создания эффекта "тряпичной куклы"

Эффект "тряпичной куклы" при движении https://gfycat.com/fragrantscentedkinglet-unrealengine-ragdolling-ue4

Чтобы применить этот эффект к скелетным анимациям, вам нужно добавить компонент “Physical Animation Component” в блупринт вашего персонажа.

Добавляем компонент "Physical Animation Component" Александр Дударев
Добавляем компонент "Physical Animation Component" Александр Дударев

Затем нужно добавить компонент “Physical Animation” на Event Graph, и, в нужный вам момент (например, при старте игры), поочередно вызвать ноды:

Задаем физическую анимацию в Event Graph Александр Дударев
Задаем физическую анимацию в Event Graph Александр Дударев
  • “Set Skeletal Mesh Component”, чтобы указать к какому Skeletal Mesh нужно применить физическую анимацию.
  • “Apply Physical Animation Settings Below”, чтобы применить физическую анимацию ко всем костям, ниже указанной в иерархии скелета. Для настройки физических сил, вы можете использовать ноду “Make Physical Animation Data” или взять уже готовый профиль. Чем выше значения сил, тем точнее физика будет стараться повторить анимацию, и наоборот. Поиграйте со значениями, чтобы добиться “пьяного эффекта”.
  • “Set All Bodies Bellow Simulate Physics”, чтобы заставить Mesh симулировать физику ниже указанной кости в иерархии скелета. Без этой ноды, ваша физическая анимация не заработает. Убедитесь, что Skeletal Mesh имеет привязанный к нему Physics Asset в свойствах.
Настройка "Physics Asset" в свойствах Skeletal Mesh Александр Дударев
Настройка "Physics Asset" в свойствах Skeletal Mesh Александр Дударев

Здесь есть один важный момент, который я бы хотел отметить. Если вы хотите, чтобы ваш персонаж мог ходить и оставался в капсуле во время движения, у вас есть 2 способа:

  • Вы применяете физическую анимацию и симулируете физику на всех костях КРОМЕ кости таза (Pelvis). Таз не будет участвовать в симуляции и ваш персонаж будет всегда находится в капсуле (Capsule Component). Это похоже на то, если бы вы насадили таз персонажа на палку, и двигали бы им по сцене, при этом все остальные части скелета симулируют физику.
  • Вы применяете физическую анимацию и симулируете физику на всех костях В ТОМ ЧИСЛЕ и на кости таза (Pelvis), но снимаете галочку “Is Local Simulation” и задаете довольно большую Position Strength. Это будет означать, что персонаж, фактически не привязан к капсуле, но физическая сила будет пытаться удерживать его в ней. Этот способ не подойдет вам, если вы хотите задать слишком низкую силу для придания эффекта “тряпичной куклы”, она просто не удержит таз персонажа внутри капсулы.

Больше информации по настройке вашего персонажа с помощью “Physical Animation” вы можете почерпнуть из стрима разработчиков Unreal Engine

Стрим разработчиков Unreal Engine про использование Physical Animation

Надеюсь, эта статья станет для кого-то отправной точкой в поиске интересных идей для игр, с использованием "Physical Animation"

6565
26 комментариев

Раз уж статья в геймдеве, мб стоит убрать "Эффект "тряпичной куклы" " и заменить на устоявшийся в индустрии термин, без всяких никому не нужных локализаций?

5
Ответить

Раз уж статья в геймдеве, то значит вместо наследования должен быть inheritance, вместо языка программирования programming language? Мб сразу ещё и на английском давайте писать, устоявшийся в индустрии язык же...
Пишите свои статьи так как вам хочется, а другие пусть пишут как им хочется.

13
Ответить

Я только благодаря этой локализации нашел то что конкретно хотел

Ответить

totally accurate battle simulator вы делали или просто такая "маркетинговая тактика"?

Ответить

маркетинговая тактика )

1
Ответить

Норм дед

Ответить