Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Sistema de ragdoll¶
Introducción¶
Desde la versión 3.1, Godot soporta la física del muñeca de trapo. Los muñecos de trapo se basan en la simulación de la física para crear animaciones de procedimientos realistas. Se utilizan para animaciones de muerte en muchos juegos.
En este tutorial, usaremos la demo de Platformer3D para crear una muñeca de trapo.
Nota
Puedes descargar la demo de Platformer3D en GitHub o usando la Asset Library.
Creando el ragdoll¶
Creación de huesos físicos¶
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.
Abre la demo de la plataforma en Godot, y luego la escena de Robi. Selecciona el nodo Skeleton
. Un botón esqueleto aparece en el menú de la barra superior:

Haz clic en él y selecciona la opción Crear esqueleto físico
. Godot generará nodos PhysicalBone
y formas de colisión para cada hueso del esqueleto y unirá las articulaciones para conectarlos:

Algunos de los huesos generados no son necesarios: el hueso MASTER
por ejemplo. Así que vamos a limpiar el esqueleto quitándolos.
Limpiando el esqueleto¶
Cada PhysicalBone
que el motor necesita simular tiene un coste de rendimiento, por lo que quieres eliminar cada hueso que sea demasiado pequeño para marcar la diferencia en la simulación, así como todos los huesos de utilidad.
Por ejemplo, si tomamos un humanoide, no quieres tener huesos físicos para cada dedo. Puedes usar un solo hueso para toda la mano en su lugar, o uno para la palma, uno para el pulgar, y uno último para los otros cuatro dedos.
Quitar estos huesos físicos: MASTER
, waist
, neck
, headtracker
. Esto nos da un esqueleto optimizado y hace más fácil el control de la muñeca de trapo.
Ajuste de formas de colisión¶
La siguiente tarea es ajustar la forma de la colisión y el tamaño de los huesos físicos para que coincidan con la parte del cuerpo que cada hueso debe simular.

Ajuste de las articulaciones¶
Una vez ajustadas las formas de colisión, su muñeca de trapo está casi lista. Sólo quieres ajustar las articulaciones para obtener una mejor simulación. Los nodos de``PhysicalBone``tienen asignada por defecto una articulación sin restricciones. Para cambiar la articulación, selecciona PhysicalBone
y cambia el tipo de restricción en la sección Joint
. Allí, puedes cambiar la orientación de la restricción y sus límites.

Este es el resultado final:

Simulando el ragdoll¶
La muñeca de trapo está lista para ser usada. Para iniciar la simulación y reproducir la animación del ragdoll, necesitas llamar al método physical_bones_start_simulation
. Adjunta un script al nodo del esqueleto y llama al método en el método _ready
:
func _ready():
physical_bones_start_simulation()
Para detener la simulación, llama al método physical_bones_stop_simulation()
.

También puedes limitar la simulación a sólo unos pocos huesos. Para ello, pasa los nombres de los huesos como un parámetro. Aquí hay un ejemplo de simulación parcial de muñeco de trapo:

Capas y máscaras de colisión¶
Make sure to set up your collision layers and masks properly so the CharacterBody3D
's capsule doesn't get in the way of the physics simulation:

Para más información, lee Capas y Máscaras de Colisión.