Sistema di ragdoll

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:

../../_images/ragdoll_menu.png

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:

../../_images/ragdoll_bones.png

Alcune delle ossa generate non sono necessarie: ad esempio l'osso MASTER. Quindi ripuliremo lo scheletro rimuovendole.

Ripulire lo scheletro

Ogni PhysicalBone che il motore ha bisogno di simulare ha un impatto sulle prestazioni, quindi è opportuno rimuovere ogni osso troppo piccolo per fare una differenza nella simulazione, così come tutte le ossa utilitarie.

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

Il prossimo passo è adattare la forma di collisione e le dimensioni delle ossa fisiche in modo che corrispondano alla parte del corpo che ogni osso deve simulare.

../../_images/ragdoll_shape_adjust.gif

Joints adjustment

Una volta aggiustate le forme di collisione, il ragdoll è quasi pronto. Basta solo regolare i giunti a perno per ottenere una simulazione migliore. Ai nodi PhysicalBone è predefinito un giunto a perno non vincolato. Per modificare il giunto a perno, seleziona PhysicalBone e modifica il tipo di vincolo nella sezione Joint. Qui puoi cambiare l'orientamento e i limiti del vincolo.

../../_images/ragdoll_joint_adjust.gif

Questo è il risultato finale:

../../_images/ragdoll_result.png

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()

Per interrompere la simulazione, chiama il metodo physical_bones_stop_simulation().

../../_images/ragdoll_sim_stop.gif

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:

../../_images/ragdoll_sim_part.gif

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:

../../_images/ragdoll_layer.png

Per ulteriori informazioni, leggere Strati e maschere di collisione.