(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


Animatorから関節(ボーン)を取得するGetBoneTransform【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2021.1.16f1


はじめに

今回は3Dキャラの関節(ボーン)をAnimatorを使って取得する方法です!

f:id:kan_kikuchi:20210906123047j:plain


なお、記事中では以下のアセットを使っています。

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}");
f:id:kan_kikuchi:20210906123047j:plain


なお、どの関節にどのTransformが設定されているか

Animatorに設定されているAvatarアセットの

f:id:kan_kikuchi:20210906142503j:plain


Configure Avatarを押すと出てくる

f:id:kan_kikuchi:20210906142514j:plain


Mapping欄から確認する事が出来ます。

f:id:kan_kikuchi:20210906142524j:plain


ちなみに該当の関節にTransformが設定されていなかったり

f:id:kan_kikuchi:20210906164457j:plain


そもそもAnimation TypeがHumanoidでなかったりして取得出来ない場合

f:id:kan_kikuchi:20210906164447j:plain


GetBoneTransformではnullが返ってきます。