Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Ragdoll-System¶
Einführung¶
Seit Version 3.1 unterstützt Godot die Ragdoll-Physik. Ragdolls verlassen sich auf Physiksimulationen, um realistische prozedurale Animationen zu erstellen. Sie werden in vielen Spielen für Todesanimationen verwendet.
In diesem Tutorial verwenden wir die Platformer3D-Demo, um eine Ragdoll einzurichten.
Bemerkung
Sie können die Platformer3D-Demo auf GitHub oder über die Asset-Bibliothek herunterladen.
Einrichten der Ragdoll¶
Erstellen von Physik-Knochen¶
Wie viele andere Funktionen in der Engine gibt es einen Node, um eine Ragdoll einzurichten: den PhysicalBone3D-Node. Um die Einrichtung zu vereinfachen, kann man PhysicalBone
Nodes mit dem "Physisches Skelett erzeugen"-Feature im Skelett-Node erzeugen.
Öffnen Sie die Platformer-Demo in Godot und dann die Robi-Szene. Wählen Sie den Skeleton
-Node. Ein Skelett-Knopf erscheint in der oberen Menüleiste:
Klicken Sie darauf und wählen Sie die Option Physikalisches Skelett erstellen
. Godot erzeugt PhysicalBone
-Nodes und Collision Shapes für jeden Knochen im Skelett und Gelenkpunkte, um sie miteinander zu verbinden:
Einige der erzeugten Knochen sind nicht notwendig: der MASTER
-Knochen zum Beispiel. Wir werden also das Skelett bereinigen, indem wir sie entfernen.
Bereinigen des Skeletts¶
Jeder PhysicalBone
, den die Engine simulieren muss, kostet Performance, so dass Sie alle Knochen entfernen wollen, die zu klein sind, um einen Unterschied in der Simulation zu machen, ebenso wie alle Hilfsknochen.
Nehmen wir zum Beispiel einen Humanoiden, so wollen Sie nicht für jeden Finger einen physikalischen Knochen haben. Man kann stattdessen einen einzigen Knochen für die gesamte Hand verwenden, oder einen für die Handfläche, einen für den Daumen und einen letzten für die anderen vier Finger.
Entfernen Sie diese physikalischen Knochen: MASTER
, waist
, neck
, headtracker
. Dies gibt uns ein optimiertes Skelett und macht es einfacher, die Ragdoll zu kontrollieren.
Anpassen der Collision Shape¶
Die nächste Aufgabe ist die Anpassung der Collision Shape und der Größe der physikalischen Knochen an den Teil des Bodys, den jeder Knochen simulieren soll.
Justierung der Gelenke¶
Nachdem Sie die Collision Shapes angepasst haben, ist Ihre Ragdoll fast fertig. Sie müssen nur noch die Gelenkpunkte anpassen, um eine bessere Simulation zu erhalten. Nodes mit dem Namen PhysicalBone
sind standardmäßig mit einem unbeschränkten Gelenkpunkt versehen. Um den Gelenkpunkt zu ändern, selektieren Sie den PhysicalBone
und ändern Sie den Beschränkungs-Typ im Joint
-Abschnitt. Dort können Sie die Ausrichtung und die Grenzen der Beschränkung ändern.
Dies ist das Endergebnis:
Simulation der Ragdoll¶
Die Ragdoll ist jetzt einsatzbereit. Um die Simulation zu starten und die Ragdoll-Animation abzuspielen, müssen Sie die Methode physical_bones_start_simulation
aufrufen. Hängen Sie ein Skript an den Skelett-Node an und rufen Sie diese Methode in der _ready
Methode auf:
func _ready():
physical_bones_start_simulation()
Um die Simulation zu stoppen, rufen Sie die Methode physical_bones_stop_simulation()
auf.
Sie können die Simulation auch auf einige wenige Knochen beschränken. Dazu übergeben Sie die Knochennamen als Parameter. Hier ist ein Beispiel für eine partielle Ragdoll-Simulation:
Kollisionsebene und Maske¶
Stellen Sie sicher, daß Sie Ihre Kollisionsebenen und Masken richtig einstellen, damit die Capsule der CharacterBody3D
nicht der Physiksimulation in die Quere kommt:
Für weitere Informationen, siehe Kollisionsebenen und -masken.