Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Простой способ добавить физическую динамику предметам на персонаже

Телеграмм канал про анимацию

вот примерно такой результат у нас получится.

Идём в Skeletal Mesh персонажа.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Skeletal Mesh это 3D-модель, привязанная к скелету. Благодаря костям её можно анимировать и деформировать.

1. Выбираем кость

Выбираем кость, к которой хотим привязать предмет. Например, Spine_04.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

2. Создаём Socket

Socket специальная точка привязки на кости или меше (mesh), к которой можно прикреплять оружие, эффекты и другие объекты. Обычно он наследует движение и вращение объекта, к которому привязан

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

3. Добавляем Preview Mesh

Добавляем Preview Mesh предмета и позиционируем Socket так, чтобы предмет находился в нужном месте относительно персонажа.

Если пивот (Pivot) нашего персонажа нас не устраивает, мы можем его поменять прямо в движке, зайдя в Modeling Mode.

Pivot опорная точка объекта, относительно которой он вращается, масштабируется и позиционируется.

Modeling Mode режим моделирования в Unreal Engine, который позволяет редактировать геометрию и параметры 3D-объектов прямо внутри движка, в том числе менять положение Pivot.

4. Создаём Box

В Blueprint персонажа создаем Box.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

И указываем для него в Parent Socket наш Weapon R.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Обнуляем Location и Rotation и делаем Scale, чтобы нам было удобно работать с ним.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Так как мы указали Socket как Parent, то, когда мы обнулим значения, Box примет положение Socket.

Этот Box будет жестко следовать за персонажем и выступать точкой крепления для физики.

5. Добавляем оружие

Добавляем само оружие или другой предмет к персонажу.

Добавляем еще один Box , в Static Mesh указываем наше оружие , называю предмет Target Weapon

Текстуру для оружия указываем тут.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Также указываем Socket Weapon_R как Parent Socket.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

ВАЖНЫЙ момент: предмет кладем в наш Skeletal Mesh, иначе мы не сможем ничего выбрать в Parent Socket

И включаем на нем Simulate Physics.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

ВАЖНО: проверьте коллизии раскачивающегося предмета. Если столкновения вам не нужны, их проще отключить. Если предмет должен сталкиваться с окружением, лучше отдельно настроить Collision Channels и исключить столкновения с самим персонажем или компонентами, к которым он прикреплен.

С тем же Box тоже происходит конфликт коллизий. Конечно, его можно исправить, включив эту галочку в Physics Constraint. (Disable Collision)

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Однако предмет еще может конфликтовать с мешем персонажа.

Коллизия включена и физика не работает и оружие дергается

Вот как можно отключить коллизии.

ВАЖНО: почему мы сначала включаем физику на предмете и только потом отключаем коллизию?

Всё просто: сначала включаем Simulate Physics, а уже после этого отключаем коллизию.

Если сначала полностью убрать коллизию у предмета, Unreal не позволит включить для него Simulate Physics.

7. Настраиваем Physics Constraint

Physics Constraint это физическое соединение между двумя объектами, которое ограничивает их движение и вращение относительно друг друга.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

В настройках Physics Constraint указываем:

  • Component 1 наш Box;
  • Component 2 оружие или другой физический предмет.
Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Также кладём Physics Constraint в Box, чтобы Physics Constraint следовал за Box.

8. Настраиваем ограничения вращения

После этого настраиваем ограничения вращения предмета: насколько сильно он может отклоняться по разным осям.

Делается это в Angular Limits.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Теперь оружие будет двигаться по физике.

Angular Limits ограничения вращения объекта в Physics Constraint: они задают, насколько далеко объект может поворачиваться по каждой оси относительно точки крепления.

Если хотите задать движение по перемещению, то идём в Linear Limits.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Дальше идём в Angular Motor.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Angular Motor пытается повернуть объект к заданной ориентации или поддерживать заданную угловую скорость.

Например, оружие по инерции отклонилось назад:

Персонаж ускорился = Оружие отстало по инерции =Angular Motor тянет его обратно = Оружие проходит нужное положение = немного раскачивается = возвращается в исходное положение.

Angular Limits границы движения

Angular Motor сила, которая управляет движением внутри этих границ

SLERP вращает по кратчайшему сферическому пути к целевой ориентации. Не работает, если хотя бы одна Angular-ось Locked.

Twist and Swing раскладывает вращение на отдельные угловые степени свободы: Twist и Swing.

Скроем наш Box, чтобы его не было видно в игре.

Когда подбираешь всё, что не прибито: добавляем физику предметам в Unreal Engine

Итого

В результате Box следует за персонажем(за костью Spine04), а оружие удерживается рядом с ним через Physics Constraint и получает физическую динамику: раскачивается, запаздывает за движением и реагирует на инерцию.

35
10
4
2
1
1