[Unity Tips]Humanoidタイプで自動設定されたボーンを取得
Unity Tipsです。
コードはC#となります。
Unityバージョンは2018.3.14f1
Unityでインポートした人型モデルを扱う際に、
モデルのリグを汎用的なHumanoidタイプで使用することが多いと思います。
自作のモデルではなく、アセットストアから購入したり、
自動生成ツールで生成したモデルのボーンは名前も階層もまちまち…
でもHumanoidにリグを変更すればあら不思議!
Humanoidに対応したアニメーションは大体うまく動きます☆
で、この自動で設定されたパーツをコードで取得できれば、
どんなモデルでも一律な処理で制御できるのではないかと思いました♪
下記の赤枠で囲まれた部分をコードで取得します。
// Animatorを取得 (objはAnimatorを持つGameObject)
Animator anim = obj.GetComponent();
// AnimatorからHumanBodyBonesの定数を指定してお尻(Hips)を取得します
Transform hips = anim.GetBoneTransform(HumanBodyBones.Hips);
HumanBodyBonesの定義は山ほどあるのでここでは書きません。
下記リンクから確認してください。
https://docs.unity3d.com/ja/current/ScriptReference/HumanBodyBones.html
何か間違い等がありましたらコメント等で
ご指摘頂けるとありがたいです。