Найти тему
Stronghold of gamedev

Игры изнутри : шарниры, пружины и сочленения

Оглавление

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

Бессвязной дичью кажется это вам, но позвольте возразить : господа joints успели побывать в каждой из них в разных формах. Мне почему-то сложно обозвать это дело русским термином ибо они принимают разные функции.

Я накатал демку и уселся писать с твердым намерением показать, объяснить и побаловаться с сочлен..кхм соединениями меж игровых объектов, подверженных физике!

Соединение?

Самый простейший способ соединить подверженные физике объекты - фиксированный joint. Зачем? Прилепленный объект может смещать центр тяжести и вообще отлететь при определенных нагрузках/вращениях.

-2

Отдаленно напоминающий объект современного искусства, на деле является лишь фиксированным соединением. Скучно?
Их может разделить пушка из статьи про разрушения!

-3

Присоединяемый объект принимает фиксированную относительно родительского позицию, чтобы их разделить можно использовать силу или вращение. Ядро приложило силу.

Шарнир?

Подбираемся к интересному. В сталкере на мой взгляд была использована как раз подобная механика дверей, в Unity она обзывается Hinge Joint и имеет широкое использование, однако покажу так же на примере дверей.

Увы мой персонаж движим не тем компонентом внутриигровой физики, что используется для всего остального, поэтому получается так :

-4

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

Обделять интересностями не буду. Вот шустрый куб :

Где родился, там и пригодился
Где родился, там и пригодился

Настраивается кручение вокруг определенной оси и возможные ограничения поворота, можно придать силу кручения ибо joint универсальный, можно сделать пружинистость, но об этом позже.

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

Тук-тук
Тук-тук

Пружина?

Отдельный joint нашелся и для пружины. Вот как интересно работает :

-7

Есть несколько основных настроек : упругость определяет в какой-то степени дальность откидывания объекта, но важно не забывать что его вес тоже играет роль; скорость отскока определяет очевидно скорость возвращения в обычную позицию, которую конечно можно задать; толерантность влияет на силу отбрасывания представителей социальных меньшинств :

-8

Хорошо, извините. Параметр tolerance обозначает погрешность.

СЕРЕЖА (я) КРУШИТЬ
СЕРЕЖА (я) КРУШИТЬ

Суставы?

А вот болванчика без них не сделать.
Как я уже ранее объяснял, на каждую косточку персонажа задается коллайдер с физикой и при отключении анимаций он падает. Вот как выглядят эти коллайдеры :

-10

Соединены они как раз с помощью joints, но Character Joint, который имеет в себе так же настройки ограничения вращения в каждом из направлений.
Вес персонажа в 80 кг по честному распределен между этим физически-корректными коллайдерами.

Вообще его падение вы уже увидели, поэтому вот :

-11

И всё это joint. В гифках с пружинками небольшие артефакты, вероятно программа записи пыталась оптимизировать изображение и сделала это крайне неудачно. О чем я говорил в начале? Статья о процедурной анимации (там тоже примеры в демке), колеса и как сломали Stalker.

Другие статьи с канала :
Игры изнутри : коллайдеры и столкновения
Как работает стрельба в играх
Как работает разрушаемость (пушка там же)