ラグドールシステム
はじめに
バージョン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()
public override void _Ready()
{
PhysicalBonesStartSimulation();
}
シミュレーションを停止するには、physical_bones_stop_simulation() メソッドを呼び出します。
シミュレーションをいくつかのボーンのみに制限することもできます。 そのためには、ボーン名をパラメーターとして渡します。 部分的なラグドールシミュレーションの例を次に示します:
コリジョンレイヤーとマスク
コリジョンレイヤーとマスクのプロパティを適切に設定して、CharacterBody3D のカプセルが物理シミュレーションの邪魔にならないようにしてください:
詳細については、次を参照してください コリジョンレイヤーとマスク。