そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【Unity】Humanoid型で設定されたボーンを取得して回転させる GetBoneTransform

はじめに

Humanoid型のアバターで設定されているボーンを動かしたかったのでメモ

具体例

まずは左膝を回転させる具体例

  //操作したいアバターに付けているのAnimatorコンポーネントを割り付け
    [SerializeField] private Animator anim;

    public void BoneRotateTest()
    {
        //トランスフォームコンポーネントの変数を宣言
        Transform leftLowerLeg;

        //左膝に設定されているTransformを取得
        leftLowerLeg = anim.GetBoneTransform(HumanBodyBones.LeftLowerLeg);

        //回転
        leftLowerLeg.Rotate(new Vector3(0, 0, 60f));
    }

詳細

指定したボーンのTransformコンポーネントは、
Animatorコンポーネントに入っている情報からGetBoneTransformで取得が可能です。

Animator.GetBoneTransform(指定したボーン);


指定のボーンはHumanBodyBonesの列挙型で指定することができます。

HumanBodyBones.対象部位



対象部位はこちらで確認するとわかりやすいです。
引用: Unity Humanoid Avatarの解説 [VirtualCast]

f:id:marumaro7:20220307060511p:plain

注意

アニメーション実行中はボーンの操作ができません。
簡易的に試すならAnimatorコンポーネントをオフにすることで動かすことができます。

参考

www.hanachiru-blog.com

kan-kikuchi.hatenablog.com

docs.unity3d.com

docs.unity3d.com