Up to date

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

ラグドールシステム

はじめに

バージョン3.1以降、Godotはラグドール物理をサポートしています。 ラグドールは物理シミュレーションに依存して、現実的な手続き型アニメーションを作成します。 多くのゲームで死のアニメーションに使用されます。

このチュートリアルでは、Platformer3Dデモを使用してラグドールをセットアップします。

注釈

Platformer3Dデモは、GitHub から、または Asset Library を使用してダウンロードできます。

ラグドールの設定

物理ボーン(Physical Bone)の作成

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

生成されたボーンのいくつかは必要ありません: 例えば MASTER ボーン。 そのため、スケルトンを削除してクリーンアップします。

スケルトンのクリーンアップ

エンジンがシミュレートする必要のある PhysicalBone にはそれぞれパフォーマンスコストがあるため、シミュレーションで違いを生むには小さすぎるすべてのボーンとすべてのユーティリティボーンを削除する必要があります。

たとえば、ヒューマノイドを使用する場合、各指に物理的なボーンは必要ありません。 代わりに、手全体に1つのボーンを使用するか、手のひらに1つ、親指に1つ、残りの4つを他の4本の指に使用できます。

これらの物理ボーンを削除します: MASTERwaistneckheadtracker。 これにより、最適化されたスケルトンが提供され、ラグドールの制御が容易になります。

コリジョン形状の調整

次のタスクは、コリジョンの形状と物理ボーンのサイズを調整して、各ボーンがシミュレートする身体の部分に一致させることです。

../../_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

コリジョンレイヤーとマスク

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:

../../_images/ragdoll_layer.png

詳細については、次を参照してください コリジョンレイヤーとマスク