IshidaGames【UnityC#講座】ユニティちゃんの表情を替える【SetLayerWeight】Tweetnoteで管理人イシゲーのゲームの思い出記事を100円で公開しました。今回はユニティちゃんアセットに付属している表情のアニメーションを使ってみました。Inspectorを設定する■まずアセットのサンプルを見てみるFaceUpdateを見てみるユニティちゃんアセットには以下の3つのSceneがあります。・ActionCheck・ARPoseTest・Locomotionそれらで表情を替えるのは全て「FaceUpdate」スクリプトが使われています。FaceUpdateその中を見て気になるのはこちらの関数です。weight);どうもlayerIndexがAnimatorControllerのレイヤーの数で、weightがレイヤーに寄せる比重の数値のようです。FaceUpdateではマウス左クリックを押している時は表情は替わり、話すとweightが1から0に向かっていくようになっています。このようにInspectorから配列に表情のアニメーションを登録しています。AnimatorControllerを見る次に付属のAnimatorControllerを見るのですが、3つともFaceレイヤーがあり、その中に乱雑にStateが置かれています。Faceレイヤーの歯車マークをクリックするとこのような画面が出ます。mask」はアニメーションを顔だけに出すものです。BlendingのOverrideはアニメーションを上書きします。Layerと同期し、同じStateで別のアニメーションを入れられます。FaceAnimationこちらに12種類あります。■疑問を確かめるQ.なぜFaceUpdateのInspectorとAnimatorControllerの両方に表情のアニメーションを入れているの?スクリプトのInspectorにアニメーションを登録しておけばAnimatorControllerにはいらないのではないかと思いました。試してみると表情は替わりません。スクリプトで指示するためにスクリプトに設置し、AnimatorControllerでアニメーションを実行するということでしょうか。mask入れないとどうなるの?試してみたら入れなくても表情出ました。色んなアニメーションやレイヤーと併用すると大事になるのかもしれません。入れておかないとより下のレイヤーのアニメーションが表に出るということでしょうか。weight)のweightを減らすとどうなるの?weightの値によって表情の変わり具合が変わります。0fだといつものユニティちゃんの表情になります。スポンサーリンク■ユニティちゃんに表情とポーズをつけるスクリプトを書くさて今度は試しに表情とポーズを同時に替えてみます。ユニティちゃんを出してください。unitychan次にスクリプトを書きます。Script次は表情とポーズを同時に出すスクリプトを書きます。名前は「FaceAndBody」です。Controller次はAnimatorControlleに表情とポーズのアニメーションをセットします。名前は「FBAnime」です。Layersをクリックし、目のマークの下にある+マークをクリックします。「Face」と入力してクリックでFaceレイヤーができます。使いたい表情を適当にドラッグ&ドロップしましょう。FaceAnimation次はポーズをセットします。Animationsそこのunitychan_ARpose1とunitychan_ARpose2の三角マークをクリックすると開いてPoseアニメーションが出てきます。Layerに放り込みましょう。Inspectorを設定するFaceAndBodyとFBAnimeをそれぞれユニティちゃんにセットします。次にFaceAnimeとBodyAnimeのSizeを5にしてクリック。出てきた欄に表情とポーズのアニメーションをそれぞれセットします。AnimatorControlleにセットしたのと同じものでないと機能しません。これで無事動いたでしょうか?WASDZキーで操作します。今回はこれで終わりです。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。