UnityのMecanimでヒューマノイドアニメーションさせる
(2017-06-20)
Space Robot Kyleを動かす。
アバターの作成
AssetsのModel/Robot Kyle
を選択し、RigのAnimation TypeをHumanoidにすると、
自動的にボーン構造を解析して人型にマッピングしたアバターが設定される。
Configure Avatarで確認すると正しく設定されているようだ。
モーションの設定
KyleのAnimatorのAnimationに設定するAnimation Controllerを作成する。 まずは2つCreate Stateし、それぞれMotionに適当なモーション(今回はFighter Pack Bundle FREEを使った)を設定し、 Make Transitionで相互に結ぶと、オレンジになっているデフォルトステートから交互にモーションする。 ステートにはStateMachineBehaviourのScriptを設定することもできる。
次にParametersでモーションを変化させる。
Animatorの左上、parametersタブからBoolのWalkを追加する。 そして片方のTransitionのConditionにWalkがfalse、もう片方にはWalkがtrueを追加すると、 状態によって違うモーションをするようになる。 ちなみに、AnyStateからConditionを設定したTransitionを設定すると、どこのStateからでもそれで遷移させることができる。
このParameterはこんな感じに値を設定できる。
void Update () {
GetComponent<Animator> ().SetBool ("Walk", Random.value < 0.5);
}
一部だけモーションさせる
人体の一部だけをモーションさせるにはAvatar Maskを使う。
Animationで複数のレイヤーを作成すれば、異なるMaskでそれぞれステートを持たせることができる。
Animation Override Controller
作ったAnimationを違うモーションで再利用することができる。