テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

かっこ良く死ね! Ragdoll

久しぶりに見たらAsset Storeのroboが増えてるじゃないですかー!ヤッター!
しかも無料じゃないですかー!ヤッター!
でもモーション一つも付いてないじゃないですかー・・・ヤダー!
で、何か一つでも芸をさせようと考えた結果、Ragdollを付けて見ることにした。

スクリーンショット 2012-10-30 22.50.47
しかしかなりのイケメン。

Space Robot Kyle
http://u3d.as/content/unity-technologies/space-robot-kyle-/3t7

Ragdollラグドール)とは何ぞや

Falloutというゲームをご存知だろうか?
核戦争後でヒャッハーな世界で生活する事ができる傑作ゲームなのだが、このゲームは死体を動かしたり持ち上げたりすることができる。(食べることもできる)

そんな感じの挙動を再現するのがラグドールらしい。
このパラメータを設定すると、手足が物理演算に従いグニャグニャする
スクリーンショット 2012-10-30 22.48.05
とりあえず殺したい人向けにデモを用意した。とりあえず殺してみて欲しい。

ロボを殺すデモ
https://dl.dropbox.com/u/56297224/UnitySumple2/Kill%20robo/web.html

ラグドールの設定方法

こちらの記事を参考にラグドールを設定してみた。

Ragdollを触ってみた
http://d.hatena.ne.jp/gumilab/20110426/1303798974

まず[GameObject]>[Create Other]>[Ragdoll...]を選択。
スクリーンショット 2012-10-30 23.03.26 

するとラグドールウィザードが開くので、モデルの各パーツを設定していく。
きっとメカニムさんはこの辺りをうまい感じに自動で入力してくれるんじゃないかと淡い期待を抱いているのは秘密。
Rootは多分モデルオブジェクトのルートを指していると思う。
スクリーンショット 2012-10-30 23.05.04
最後にCreateを選択すれば、設定したモデルはラグドール付きモデルになる。

Ragdoll Wizard
http://docs.unity3d.com/Documentation/Components/wizard-RagdollWizard.html

■アニメーションと連携方法が思いつかない

さて、このラグドールは一体何をしているのかといえば、簡単に言えば各パーツ毎にJoint(Rigitbody同士を接続するコンポーネントでドア等に使用)で接続しているだけらしい。つまり、各Rigitbodyを止めない限りラグドールの物理演算にしたがって倒れたり転がったり、色々してしまう事になる。

ここで面倒くさいのが、ラグドールをONにしたままAnimationを制御するうまい方法が思いつかない点。普通にやれば良いじゃんと思うかもしれないが、アニメーション時にラグドールと地面のコリジョンが干渉して、変な挙動になってしまう。もしかしたらうまい方法があるかもしれないが、思いつかなかった。
これは、例えば「走る」アニメーションを行なっている際に「銃弾を受けてのけぞる」的な挙動方法が思いつかないって事。死んだ時はON/OFFを切り替えるだけで良いが…ぐぬぬ