Up to date
This page is up to date for Godot 4.3.
If you still find outdated information, please open an issue.
ラグドールシステム
はじめに
バージョン3.1以降、Godotはラグドール物理をサポートしています。 ラグドールは物理シミュレーションに依存して、現実的な手続き型アニメーションを作成します。 多くのゲームで死のアニメーションに使用されます。
このチュートリアルでは、Platformer3Dデモを使用してラグドールをセットアップします。
注釈
Platformer3Dデモは、GitHub から、または Asset Library を使用してダウンロードできます。
ラグドールの設定
物理ボーン(Physical Bone)の作成
エンジンの他の多くの機能と同様に、ラグドールをセットアップするノードがあります: PhysicalBone3D ノードです。 セットアップを簡素化するために、スケルトンノードで[物理スケルトンを作成する]機能を使用して PhysicalBone ノードを生成できます。
Godotでプラットフォーマーデモを開き、次にRobiのシーンを開きます。Skeleton ノードを選択します。 スケルトンボタンがトップバーメニューに表示されます:
それをクリックして、[物理スケルトンを作成する]オプションを選択します。 Godotは PhysicalBone ノードとスケルトンの各ボーンの衝突形状を生成し、それらを接続するためにジョイントを固定します:
生成されたボーンのいくつかは必要ありません: 例えば MASTER ボーン。 そのため、スケルトンを削除してクリーンアップします。
スケルトンのクリーンアップ
エンジンがシミュレートする必要のある PhysicalBone にはそれぞれパフォーマンスコストがあるため、シミュレーションで違いを生むには小さすぎるすべてのボーンとすべてのユーティリティボーンを削除する必要があります。
たとえば、ヒューマノイドを使用する場合、各指に物理的なボーンは必要ありません。 代わりに、手全体に1つのボーンを使用するか、手のひらに1つ、親指に1つ、残りの4つを他の4本の指に使用できます。
これらの物理ボーンを削除します: MASTER、waist、neck、headtracker。 これにより、最適化されたスケルトンが提供され、ラグドールの制御が容易になります。
コリジョン形状の調整
次のタスクは、コリジョンの形状と物理ボーンのサイズを調整して、各ボーンがシミュレートする身体の部分に一致させることです。
関節の調整
コリジョン形状を調整すると、ラグドールの準備がほぼ整います。 より良いシミュレーションを得るには、ピンジョイントを調整するだけです。PhysicalBone ノードには、デフォルトで制約のないピンジョイントが割り当てられています。 ピンジョイントを変更するには、PhysicalBone を選択し、 Joint セクションで拘束タイプを変更します。 そこで、拘束の方向と限界を変更できます。
これが最終結果です:
ラグドールをシミュレートする
これでラグドールを使用する準備ができました。 シミュレーションを開始してラグドールアニメーションを再生するには、physical_bones_start_simulation メソッドを呼び出す必要があります。 スクリプトをスケルトンノードにアタッチし、_ready メソッドでメソッドを呼び出します:
func _ready():
physical_bones_start_simulation()
シミュレーションを停止するには、physical_bones_stop_simulation() メソッドを呼び出します。
シミュレーションをいくつかのボーンのみに制限することもできます。 そのためには、ボーン名をパラメーターとして渡します。 部分的なラグドールシミュレーションの例を次に示します:
コリジョンレイヤーとマスク
コリジョンレイヤーとマスクのプロパティを適切に設定して、CharacterBody3D のカプセルが物理シミュレーションの邪魔にならないようにしてください:
詳細については、次を参照してください コリジョンレイヤーとマスク。