読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

UnityでRagdoll物理

こんにちは、FPSゲーム大好きエンジニアの成田です。

皆さんはRagdollってご存じでしょうか?
FPSゲームを遊んだことがある方は耳にしたことがあるかもしれません。
敵を倒した瞬間、体がぐにゃっと崩れ落ちるあの動き、そう、あれです。

Unityではキャラクタに対してRagdollを簡単に適用することができます。

1.Ragdollとは

Doomなど以前の3Dゲームでは敵キャラを倒した時には、あらかじめ作っておいた死亡演出用のキャラクタアニメーションを単純にフレームで再生するだけでした。しかし近年のCPUの性能向上により、ゲームにおいて物理演算によるリアルな演出が可能になると、死亡演出に関してもモーションが決まり切ったアニメーションよりも物理演算によって現実的な動きをさせる試みが行われました。

Ragdollはこのような死亡や気絶のような演出に用いられる代表的な手法で、人体を関節で接続された剛体の集合とみなし、関節に可動制約を付けることによって人「っぽい」動きをさせることが可能です。たまにおかしな動きもしますが……。
ちなみにRagdollとは「ぬいぐるみ」という意味だとか。

ではやってみましょう!

2.手順

まずは準備です。TerrainとSkyboxでチャチャッと背景を作成します。
img1_
超適当ですが、とりあえずこれでいきましょう。

Ragdollは簡単に適用できるとはいえ、アニメーションさせるキャラクタは用意しないといけません。
今回はAsset Storeから無料のモデルを持ってきましょうか。そんなときはやっぱりUNITY-CHAN
img2_

インポートしたらunitychanとDirectional light、カメラをそれっぽく配置します。
img3_
配置できました。これでやっと準備完了です。

さてRagdollを適用します。GameObjectメニューからCreate Other->Ragdoll..を選択します。
img4_

そうすると下図のようなRagdoll Wizardが開きます。
img5
Ragdollさせるのに必要な各ボーンを確認して当てはめていきます。
img6
今回Asset StoreからダウンロードしたUNITY-CHANは上のRagdoll Wizardの画像で示したような当てはめでいけました。
最後にCreateボタンを押すとモデルにRagdollが適用されます。

これだけで完成!すごく簡単ですね。
実際にゲームに利用する場合はRagdollを適用したモデルと適用していないモデルを用意しておき、通常時はRagdoll非適用モデルを動かし、キャラが死亡した瞬間にRagdoll適用モデルに置き換えるなどの処理が必要になるかと思います。

3.結果

再生ボタンをPush!
mov1_
崩れ落ちるUNITY-CHAN……。クリックするとmp4のスムーズな動画で見ることができます。
ちょっと不自然な動きですがRagdollが効いてることが確認できました。

Ragdollいかがでしたでしょうか。アクションゲームを作成するときには欠かせない演出ですよね。