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

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

Ragdoll系のアセットを二つ試す

Easy Ragdoll creator

Humanoidを指定すると自動的にラグドールにしてくれるツール
assetstore.unity.com

f:id:yasu9780:20201010013048p:plain
Easay Ragdoll creator

 VRoidキャラを指定したけど残念ながら正しくボーンを取得できなかった。表記ゆれもあるし、スカートやら髪やらのボーンもあるので判断できなかったのでしょう。

Ragdoll Copier

次は、指定した元のラグドールからラグドールの設定をコピーしてくれるアセット

assetstore.unity.com

f:id:yasu9780:20201010013220p:plain

標準でチェックが入ってないので use humanoid mappingはONにしましょう

f:id:yasu9780:20201010013132p:plain
Ragdoll Copier

無事、ジョイントやコライダーやらがコピーされました

実行するとラグドールなので倒れます。

f:id:yasu9780:20201010013203p:plain
↑足のコライダーが太すぎると足を開いて倒れるので、コライダーを細くすれば女子らしく倒れるでしょう

全自動作成は無理でしたが、手動で1つ作っておけば、VRoidは基本的に同じボーン構造でしょうからコピーアセットでラグドールを量産できそうです。

以前、スクリプトラグドール化する奴をやってたけど、難しいのはコライダーをちゃんとつけるのが難しい
モデルによってボーンどうしの角度や大きさや向きが違うので適切にやるのはかなり難しいので
結局コピーと同じようなことをやってたので。

プレイヤーだけなら実はラグドールだけどいつもは無効にしてAnimatorで動いて、死ぬときだけラグドールに戻ると動きが自然です
NPCでこれをやると各関節にRigidbodyがつくことになって非常に重くなるので、NPCの場合は死んだらラグドールに置き換える必要があります。
ただ、置き換えるだけだと突然Tポーズのラグドールになって倒れるので不自然です。
そこで、置き換える前の手足や頭の位置を保存しておいて、ラグドールの手足頭をその位置に動かしてやれば自然な遷移になります。