ラグドールシステム¶
はじめに¶
バージョン3.1以降、Godotはラグドール物理をサポートしています。 ラグドールは物理シミュレーションに依存して、現実的な手続き型アニメーションを作成します。 多くのゲームで死のアニメーションに使用されます。
このチュートリアルでは、Platformer3Dデモを使用してラグドールをセットアップします。
注釈
Platformer3Dデモは、GitHub から、または Asset Library を使用してダウンロードできます。
ラグドールの設定¶
物理ボーン(Physical Bone)の作成¶
エンジンの他の多くの機能と同様に、ラグドールをセットアップするノードがあります: PhysicalBone ノードです。 セットアップを簡素化するために、スケルトンノードで[物理スケルトンを作成する]機能を使用して 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()
メソッドを呼び出します。
シミュレーションをいくつかのボーンのみに制限することもできます。 そのためには、ボーン名をパラメーターとして渡します。 部分的なラグドールシミュレーションの例を次に示します:
コリジョンレイヤーとマスク¶
コリジョンレイヤーとマスクを適切に設定して、KinematicBody
のカプセルが物理シミュレーションの邪魔にならないようにしてください:
詳細については、次を参照してください コリジョンレイヤーとマスク。