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

AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

Unityちゃんのragdollのツインテールにもjointを入れてみる

 ragdollは、boneにjointを入れて人形みたいにしたやつで、unity5のメニューからGameObject→3D Object→Ragdollと選ぶことでwizardが出てくる。
 既存のhumanoid型のキャラクターの各関節をwizardにそって登録していくと、頭・腰・手足の部分がjoint関節に変更できる。
 これで銃撃で死んだ場合などに倒れ落ちるシーンがリアルに再現できる。
 unity-chanをragdollにしてみたんですが、巨大なツインテールにはjointは設定されないので、そのままでは倒れた時に、ツインテールが頭から固定で生えているような体制で倒れます。
 このツインテールにもjointを入れられないのかな? と思って試しに入れてみました。
 unity-chanのboneの階層では、ツインテールは頭の下にぶら下がっています。

f:id:yasu9780:20160916180659p:plain
 この頭とツインテールの間をjointにしてみます。

f:id:yasu9780:20160916180707p:plain
 character jointをadd。これはaddしただけで値はなにも弄ってません。何の値かよく分からないし(ゝω・)
 ただ、親のboneとしてheadは登録してます。
 さらにcapsule Colliderを入れます。

 標準のragdollツインテールにjointを追加したragdollが倒れた場合の比較。
 標準では仰向けになった場合にツインテールが固定された塊扱いになっている。うつ伏せでもツインテールが不自然にぴーんとなっている。
 一方、jointを追加した方は、ツインテールが曲がって頭や体の下にはさまってくれるのでより自然な姿勢で倒れている。
 うつ伏せの場合はツインテールの第一関節しかjointにしてないので、第2関節のせいで多少ぴーんとなっているが、標準よりは自然。手間だけど第2関節以降もjointにすればより良いと思う。(テールは1から6まである)

f:id:yasu9780:20160916182048p:plain