Ragdoll system
Introduzione
Dalla versione 3.1, Godot supporta la fisica di ragdoll. I ragdoll dipendono sulla simulazione della fisica per creare animazioni procedurali realistiche. Sono utilizzati per le animazioni di morte in molti giochi.
In this tutorial, we will be using the Platformer3D demo to set up a ragdoll.
Nota
Puoi scaricare la demo di Platformer3D su GitHub oppure attraverso la Libreria dei contenuti.
Setting up the ragdoll
Creating physical bones
Come molte altre funzionalità del motore, c'è un nodo per impostare un ragdoll: il nodo PhysicalBone3D. Per semplificare la configurazione, è possibile generare nodi PhysicalBone con la funzionalità "Crea scheletro fisico" nel nodo scheletro.
Apri la demo del platform in Godot, quindi la scena di Robi. Seleziona il nodo Skeleton. Un pulsante scheletro appare nel menu della barra superiore:
Cliccaci sopra e seleziona l'opzione Crea scheletro fisico. Godot genererà nodi PhysicalBone e forme di collisione per ogni osso dello scheletro e perni per collegarli tra loro:
Alcune delle ossa generate non sono necessarie: ad esempio l'osso MASTER. Quindi ripuliremo lo scheletro rimuovendole.
Ripulire lo scheletro
Each PhysicalBone the engine needs to simulate has a performance cost, so you want to remove every bone that is too small to make a difference in the simulation, as well as all utility bones.
Ad esempio, se prendiamo un umanoide, non vogliamo avere ossa fisiche per ogni dito. Possiamo usare un singolo osso per l'intera mano, oppure uno per il palmo, uno per il pollice e un ultimo per le altre quattro dita.
Rimuovi queste ossa fisiche: MASTER, waist, neck, headtracker. Questo ci dà uno scheletro ottimizzato e rende più facile controllare il ragdoll.
Aggiustamento della forma di collisione
The next task is adjusting the collision shape and the size of physical bones to match the part of the body that each bone should simulate.
Joints adjustment
Once you adjusted the collision shapes, your ragdoll is almost ready. You just want to adjust the pin joints to get a better simulation. PhysicalBone nodes have an unconstrained pin joint assigned to them by default. To change the pin joint, select the PhysicalBone and change the constraint type in the Joint section. There, you can change the constraint's orientation and its limits.
Questo è il risultato finale:
Simulare la ragdoll
Il ragdoll è ora pronto per l'uso. Per avviare la simulazione e riprodurre l'animazione del ragdoll, è necessario chiamare il metodo physical_bones_start_simulation. Collega uno script al nodo scheletro e chiamalo nel metodo _ready:
func _ready():
physical_bones_start_simulation()
public override void _Ready()
{
PhysicalBonesStartSimulation();
}
Per interrompere la simulazione, chiama il metodo physical_bones_stop_simulation().
Puoi anche limitare la simulazione a soltanto qualche osso. Per farlo, passa i nomi delle ossa come parametro. Ecco un esempio di simulazione parziale di ragdoll:
Strato e maschera di collisione
Assicurati di impostare correttamente gli strati e le maschere di collisione in modo che la capsula di CharacterBody3D non si metta in mezzo la simulazione della fisica:
Per ulteriori informazioni, leggere Collision layers and masks.