Система Ragdoll¶
Введение¶
Начиная с версии 3.1, Godot поддерживает физику тряпичных кукол (ragdolls). Для создания реалистичной процедурной анимации тряпичные куклы используют физическое моделирование. Они используются для анимации смерти во многих играх.
В этом учебном пособии мы будем использовать пример Platformer3D для настройки тряпичной куклы.
Примечание
Вы можете скачать пример Platformer3D с GitHub или использовать Библиотеку Ассетов.
Настройка куклы¶
Создание физических костей¶
Как и для многих других возможностей движка существует узел для настройки куклы: PhysicalBone. Для упрощения настройки Вы можете создать узлы PhysicalBone
через функцию "Создать физический скелет" в узле скелетона.
Откройте демо платформера в Godot, а затем сцену Robi. Выберите узел Skeleton
. В меню верхней панели появится кнопка скелета:

Щелкните его и выберите опцию Создать физический скелет
. Godot будет генерировать узлы PhysicalBone
и формы столкновений для каждой кости скелета и штыревые крепления для их соединения:

Некоторые из созданных костей не являются необходимыми: например, кость``MAIN``. Мы очистим скелет, удалив её.
Очистка скелета¶
Каждая PhysicalBone
, которую должен моделировать движок, ухудшает производительность, поэтому Вы захотите удалить каждую кость, которая слишком мала, чтобы оказывать влияние на моделирование, а также все вспомогательные кости.
Например, если мы берем гуманоида, Вы не захотите иметь физические кости для каждого пальца. Вместо этого Вы можете использовать единственную кость для всей руки, или одну для ладони, одну для большого пальца и последнюю для остальных четырех пальцев.
Удалите эти физические кости: MASTER
, waist
, neck
, headtracker
. Это даст нам оптимизированный скелет и облегчит управление куклой.
Настройка форм столкновений¶
Следующая задача — настроить форму столкновений и размеры физических костей так, чтобы они соответствовали частям тела, которые должна моделировать каждая кость.

Настройка суставов¶
Как только Вы настроили формы столкновения, Ваша кукла почти готова. Вы просто хотите настроить суставы для более качественного моделирования. У узлов PhysicalBone
есть неограниченный сустав, назначенный на них по умолчанию. Чтобы изменить сустав, выберите PhysicalBone
и поменяйте тип ограничения в разделе Joint
. Там Вы можете изменить ориентацию ограничения и ее пределы.

Это и есть финальный результат:

Моделирование куклы¶
Теперь кукла готова к использованию. Для запуска моделирования и воспроизведения анимации куклы необходимо вызвать метод physical_bones_start_simulation
. Присоедините скрипт к скелетному узлу и вызовите метод в _ready
методе:
func _ready():
physical_bones_start_simulation()
Чтобы остановить моделирование, вызовите метод physical_bones_stop_simulation()
.

Можно также ограничить моделирование только несколькими костями. Для этого передайте имена костей в качестве параметра. Вот пример частичного моделирования куклы:

Слой столкновения и маска¶
Не забудьте правильно настроить слои столкновений и маски, чтобы капсула KinematicBody
не попала в путь физического моделирования:

Для получения дополнительной информации см. Слои и маски столкновений.