この記事でのバージョン
Unity 2021.1.16f1
はじめに
今回は3Dキャラの関節(ボーン)をAnimatorを使って取得する方法です!
なお、記事中では以下のアセットを使っています。
Rin | Characters | Unity Asset Store |
GetBoneTransform
さっそくですがAnimatorから関節(のTransform)を取得するには
GetBoneTransformというメソッドを使います。
実際に使ってみると以下のような感じでHumanBodyBonesで取得したい部位を指定する感じです。
//Animator取得 Animator animator = GetComponent<Animator>(); //Head(頭)のTransform取得、ログで確認) Transform head = animator.GetBoneTransform(HumanBodyBones.Head); Debug.Log($"Head : {head.name}");
なお、どの関節にどのTransformが設定されているかは
Animatorに設定されているAvatarアセットの
Configure Avatarを押すと出てくる
Mapping欄から確認する事が出来ます。
ちなみに該当の関節にTransformが設定されていなかったり、
そもそもAnimation TypeがHumanoidでなかったりして取得出来ない場合、
GetBoneTransformではnullが返ってきます。