Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Система Ragdoll

Введение

Начиная с версии 3.1, Godot поддерживает физику тряпичных кукол (ragdolls). Для создания реалистичной процедурной анимации тряпичные куклы используют физическое моделирование. Они используются для анимации смерти во многих играх.

В этом учебном пособии мы будем использовать пример Platformer3D для настройки тряпичной куклы.

Примечание

Вы можете скачать пример Platformer3D с GitHub или использовать Библиотеку Ассетов.

Настройка куклы

Создание физических костей

Like many other features in the engine, there is a node to set up a ragdoll: the PhysicalBone3D node. To simplify the setup, you can generate PhysicalBone nodes with the "Create physical skeleton" feature in the skeleton node.

Откройте демо платформера в Godot, а затем сцену Robi. Выберите узел Skeleton. В меню верхней панели появится кнопка скелета:

../../_images/ragdoll_menu.png

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

../../_images/ragdoll_bones.png

Некоторые из созданных костей не являются необходимыми: например, кость``MAIN``. Мы очистим скелет, удалив её.

Очистка скелета

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

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

Удалите эти физические кости: MASTER, waist, neck, headtracker. Это даст нам оптимизированный скелет и облегчит управление куклой.

Настройка форм столкновений

Следующая задача — настроить форму столкновений и размеры физических костей так, чтобы они соответствовали частям тела, которые должна моделировать каждая кость.

../../_images/ragdoll_shape_adjust.gif

Настройка суставов

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

../../_images/ragdoll_joint_adjust.gif

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

../../_images/ragdoll_result.png

Моделирование куклы

Теперь кукла готова к использованию. Для запуска моделирования и воспроизведения анимации куклы необходимо вызвать метод physical_bones_start_simulation. Присоедините скрипт к скелетному узлу и вызовите метод в _ready методе:

func _ready():
    physical_bones_start_simulation()

Чтобы остановить моделирование, вызовите метод physical_bones_stop_simulation().

../../_images/ragdoll_sim_stop.gif

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

../../_images/ragdoll_sim_part.gif

Слой столкновения и маска

Обязательно правильно настройте слои и маски столкновений, чтобы капсула CharacterBody3D не мешала физической симуляции:

../../_images/ragdoll_layer.png

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