うにty生活

UnityChanを生活させたい

アニメーションレイヤーを自分で設定してみた #8

 

どうもラブへです!

このブログは「Unityちゃんを生活させよう」のコンセプトでやっているのに

Unityちゃんの記事が少ないという・・

 

だから今回はUnityちゃんに表情をつけてにっこり笑顔にしていきたいと思います!

f:id:tubakihimeLoveHate:20180924155003p:plain

 

 

 

◆自分でAnimetorを設定する

Unityちゃんアセットに元々付属されているAnimetorをアタッチすれば、すぐにUnityちゃんの表情を変化させることが可能です

 

が、今回はそのAnimetorを自分で作っていきたいと思います!

 

その前に以前にもAnimetorには触れたことが有りますのでわからないことがあればそちらから読んでいただくことをお勧めします(説明も重複してしまうので・・・)

 

tubakihimelovehate.hatenablog.com

 

 

①まずはプロジェクトビュー>Create>Animetor Controllerで

Animetorを作成していきます名前は「UnitychanAnime」にして、そのAnimetorを開きましょう

 

②Animetor編集画面が出てきたと思います

Layersタブを押して+でレイヤー(レイヤーの説明は後ほど)を追加していきます

名前は「face」とします

f:id:tubakihimeLoveHate:20180924154847p:plain

 

③faceを選択した状態で、ステートを3つ作成します

f:id:tubakihimeLoveHate:20180924155520p:plain

 

 

④最初に作ったStateがオレンジ色だと思うので名前を「normal」に変更します

そのほかの二つどっちがどっちでも良いので「angry」と「smile」に変更します

それぞれのステートを選択するとInspectorにMotionという項目があるので

waitステート = default@unitychan

smileステート = smile1@unitychan

angryステート = angry1@unitychan

のMotionをそれぞれつけましょう

 

⑤「normal」ステートを右クリック>Make Transitionで矢印をsmileに伸ばしていきます

f:id:tubakihimeLoveHate:20180924155911g:plain

そのあとに続けてこの状態にします

f:id:tubakihimeLoveHate:20180924155946p:plain

 

⑥パラメーター作成

Parameterタブに切り替えて+でパラメーターを3つ作成していきます

全てBoolで作成して順番はなんでも良いので先ほどの3つステートと名前を一緒にします

 

⑦⑤で伸ばした矢印のInspectorからConditions項目があるので+で⑥のパラメーターを追加していきます

例えばnormalからsmileに伸びる矢印ではsmile = trueを設定し、反対はnormal = trueにします

f:id:tubakihimeLoveHate:20180924160246p:plain

そのほかも例のように設定していきます

 

⑧新たにC#スクリプトを作成して下のコードを打ち込んでください

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UnityChanControl : MonoBehaviour {
 
    private Animator animator;

  void Start()
    {
        animator = GetComponent<Animator>();
    }

  void FixedUpdate()
{

     if(Input.GetKey(KeyCode.J)){
       animator.SetBool("happy",true);
       animator.SetBool("face_wait",false);
       animator.SetBool("angry",false);
}else if(Input.GetKey(KeyCode.F)){
       animator.SetBool("angry",true);
       animator.SetBool("face_wait",false);
       animator.SetBool("happy",false);
}else{
       animator.SetBool("face_wait",true);
       animator.SetBool("happy",false);
       animator.SetBool("angry",false);
}

    }
}

これをUnityちゃんにアタッチすれば完成!

 

・・・ではありません!

実は今回の記事はここからが本番なのです

 

◆アニメーションレイヤー

docs.unity3d.com

アニメーションレイヤーとは部分ごとにアニメーションを設定できたり、

さらに同時に2つ以上のアニメーションを実行できる機能です

先ほど②で記述していたレイヤーとはこのことです

 

今回設定したMotionのangryやsmileは顔用に作成されたもので、そのままUnityちゃんにアタッチしても動きません

アニメーションレイヤーの機能を使ってUnityちゃんの顔(face)だけに作用するよう、設定しましょう

 

アニメーションレイヤーの設定は②で追加したレイヤー「face」のイガイガボール笑

みたいなところから設定できます

f:id:tubakihimeLoveHate:20180924160837p:plain

 

とりあえず一番重要なMask項目から説明していきます

f:id:tubakihimeLoveHate:20180924161059p:plain

 

◆Maskの作成・設定

maskでそのレイヤーがどこに作用するものか設定できます

そのためにAvatar Maskが必要になります。もちろんUnitychanには最初から付属されていますが、これも自分で設定してみましょう

 

①プロジェクトビュー>Create>Avatar MaskでAvatar Maskを作成し、名前を「face_Avatar」にします

Inspectorを見るとHumanoidとTransformが存在します

 

※今回はTransformで設定していきますがHumanoidものぞいてみましょう

これはオブジェクトを人型に設定していればこのように感覚的に選択することもできる

という機能です

f:id:tubakihimeLoveHate:20180924160906p:plain

ではTransformに戻りましょう

 

②Transform項目を開くと

「Use skeletion from」という項目がありますので「unitychanAvator」を探して選択して、その下のImport skeletionを押すとこんな感じになります

f:id:tubakihimeLoveHate:20180924160933p:plain

 

これを一つずつ選択していくのか・・・と私も思いましたがTransformなので

親のチェックが外れると子のチェックも全て外れます一度全て外しましょう

チェックをつけるのはたったこれだけです

f:id:tubakihimeLoveHate:20180924160943p:plain

末尾に「_DEF」と付いているものだけチェックしてください

これをfaceレイヤーのMaskに設定すれば完了です

 

 

◆weight項目

レイヤーの重みづけをします

他のレイヤーに対してどのくらいアニメーションを実行するか設定します

この項目は1にしておきましょう

そうすることで例えばBase Layerに歩くアニメーションが設定されていれば

歩きながら表情を変化させることが可能です

 

※ここを0にすると全く動きません

0.5にしてUnityちゃんのsmile1など実行すると半笑いみたいになります笑

 

その他の項目は今回使わないのでそのままにしておきます 

 

◆完成

「UnitychanAnime」をUnitychanのAnimetorに設定すれば完成です!

お疲れ様でした

f:id:tubakihimeLoveHate:20180924161727g:plain

前の記事と合わせるとこんな風に歩きながら笑顔にしてあげることができました!

 

tubakihimelovehate.hatenablog.com

 

 

こんな感じでUnityちゃんをどんどん可愛くしていこうと思ってます!

 

 今回はそんなに文字打った気がしないけどまた3000くらいなってました・・・

できれば短い記事で投稿頻度をあげていきたいけどいつになることやら

 

ではまた