こんにちは、FPSゲーム大好きエンジニアの成田です。
皆さんはRagdollってご存じでしょうか?
FPSゲームを遊んだことがある方は耳にしたことがあるかもしれません。
敵を倒した瞬間、体がぐにゃっと崩れ落ちるあの動き、そう、あれです。
Unityではキャラクタに対してRagdollを簡単に適用することができます。
1.Ragdollとは
Doomなど以前の3Dゲームでは敵キャラを倒した時には、あらかじめ作っておいた死亡演出用のキャラクタアニメーションを単純にフレームで再生するだけでした。しかし近年のCPUの性能向上により、ゲームにおいて物理演算によるリアルな演出が可能になると、死亡演出に関してもモーションが決まり切ったアニメーションよりも物理演算によって現実的な動きをさせる試みが行われました。
Ragdollはこのような死亡や気絶のような演出に用いられる代表的な手法で、人体を関節で接続された剛体の集合とみなし、関節に可動制約を付けることによって人「っぽい」動きをさせることが可能です。たまにおかしな動きもしますが……。
ちなみにRagdollとは「ぬいぐるみ」という意味だとか。
ではやってみましょう!
2.手順
まずは準備です。TerrainとSkyboxでチャチャッと背景を作成します。
超適当ですが、とりあえずこれでいきましょう。
Ragdollは簡単に適用できるとはいえ、アニメーションさせるキャラクタは用意しないといけません。
今回はAsset Storeから無料のモデルを持ってきましょうか。そんなときはやっぱりUNITY-CHAN。
インポートしたらunitychanとDirectional light、カメラをそれっぽく配置します。
配置できました。これでやっと準備完了です。
さてRagdollを適用します。GameObjectメニューからCreate Other->Ragdoll..を選択します。
そうすると下図のようなRagdoll Wizardが開きます。
Ragdollさせるのに必要な各ボーンを確認して当てはめていきます。
今回Asset StoreからダウンロードしたUNITY-CHANは上のRagdoll Wizardの画像で示したような当てはめでいけました。
最後にCreateボタンを押すとモデルにRagdollが適用されます。
これだけで完成!すごく簡単ですね。
実際にゲームに利用する場合はRagdollを適用したモデルと適用していないモデルを用意しておき、通常時はRagdoll非適用モデルを動かし、キャラが死亡した瞬間にRagdoll適用モデルに置き換えるなどの処理が必要になるかと思います。
3.結果
再生ボタンをPush!
崩れ落ちるUNITY-CHAN……。クリックするとmp4のスムーズな動画で見ることができます。
ちょっと不自然な動きですがRagdollが効いてることが確認できました。
Ragdollいかがでしたでしょうか。アクションゲームを作成するときには欠かせない演出ですよね。