久しぶりに見たらAsset Storeのroboが増えてるじゃないですかー!ヤッター!
しかも無料じゃないですかー!ヤッター!
でもモーション一つも付いてないじゃないですかー・・・ヤダー!
で、何か一つでも芸をさせようと考えた結果、Ragdollを付けて見ることにした。
しかしかなりのイケメン。
Space Robot Kyle
http://u3d.as/content/unity-technologies/space-robot-kyle-/3t7
■Ragdoll(ラグドール)とは何ぞや
Falloutというゲームをご存知だろうか?核戦争後でヒャッハーな世界で生活する事ができる傑作ゲームなのだが、このゲームは死体を動かしたり持ち上げたりすることができる。(食べることもできる)
そんな感じの挙動を再現するのがラグドールらしい。
このパラメータを設定すると、手足が物理演算に従いグニャグニャする。
とりあえず殺したい人向けにデモを用意した。とりあえず殺してみて欲しい。
ロボを殺すデモ
https://dl.dropbox.com/u/56297224/UnitySumple2/Kill%20robo/web.html
■ラグドールの設定方法
こちらの記事を参考にラグドールを設定してみた。まず[GameObject]>[Create Other]>[Ragdoll...]を選択。Ragdollを触ってみた
http://d.hatena.ne.jp/gumilab/20110426/1303798974
するとラグドールウィザードが開くので、モデルの各パーツを設定していく。
きっとメカニムさんはこの辺りをうまい感じに自動で入力してくれるんじゃないかと淡い期待を抱いているのは秘密。
Rootは多分モデルオブジェクトのルートを指していると思う。
最後にCreateを選択すれば、設定したモデルはラグドール付きモデルになる。
Ragdoll Wizard
http://docs.unity3d.com/Documentation/Components/wizard-RagdollWizard.html
■アニメーションと連携方法が思いつかない
さて、このラグドールは一体何をしているのかといえば、簡単に言えば各パーツ毎にJoint(Rigitbody同士を接続するコンポーネントでドア等に使用)で接続しているだけらしい。つまり、各Rigitbodyを止めない限りラグドールの物理演算にしたがって倒れたり転がったり、色々してしまう事になる。ここで面倒くさいのが、ラグドールをONにしたままAnimationを制御するうまい方法が思いつかない点。普通にやれば良いじゃんと思うかもしれないが、アニメーション時にラグドールと地面のコリジョンが干渉して、変な挙動になってしまう。もしかしたらうまい方法があるかもしれないが、思いつかなかった。
これは、例えば「走る」アニメーションを行なっている際に「銃弾を受けてのけぞる」的な挙動方法が思いつかないって事。死んだ時はON/OFFを切り替えるだけで良いが…ぐぬぬ