アニメーションの管理

作成したアニメーションを実際に動かす方法。

 

コンポーネントにアニメーションコントローラーを追加してあるオブジェクトを選択した状態で、ウィンドウ→アニメーション→アニメーターをクリック。

f:id:n_obu1980:20210414081707p:plain

 

このような画面が開きます。

f:id:n_obu1980:20210414082127p:plain

 

アニメーションとアニメーターはややこしいですが、以下のような内容となります。

アニメーション
→アニメーションファイルそのもの

アニメーター
→アニメーションを制御するもの

 

表示されているアニメーションファイルの中でオレンジになっているファイルがデフォルトで表示されるアニメーションとなります。

何も操作していない間はただ立っている状態にしたいので、”player_stand"をデフォルトにしています。

デフォルトを変更したい場合には、アニメーションを右クリックして、”レイヤーデフォルトステートとして設定する”をクリックすれば変更されます。

 

次に立ち(player_stand)と走る(player_run)の遷移を設定していきます。

player_standを右クリックして、”遷移を作成”をクリックします。

f:id:n_obu1980:20210414082936p:plain

 

矢印が設定できるようになるので、player_runをクリックして矢印をつなげます。

f:id:n_obu1980:20210414083114p:plain

矢印を設定するアニメーションを間違えた場合には、矢印をクリックして、Deleteで削除ができます。

 

矢印をクリックすると、遷移の設定内容を変更することができます。

f:id:n_obu1980:20210414083425p:plain

まずは終了時間ありのチェックを外します。

これはアニメーションが全て終了したら、次のアニメーションにいくという設定になります。

今回は立ちの状態から、移動キーを入力したらすぐに走りに遷移したいので、外しておきます。

 

f:id:n_obu1980:20210414083652p:plain

次にSettingsの横の矢印をクリックすると、設定値が出てきます。

遷移間隔(s)を0に設定します。

この設定時間中、次のアニメーションとブレンドしながら遷移していくことになりますが、2Dゲームで画像で作成したアニメーションの場合はブレンドできないため、0にしています。

 

次にアニメーションが遷移する条件を設定していきます。

アニメーターをクリック→パラメーター→”+▼”をクリックすると、追加したい型を聞かれます。

f:id:n_obu1980:20210414084247p:plain


Float:浮動小数点数値型(小数点が使える)

スピードが一定以上になったらアニメーションを変える、などの使い方をする。

int:整数数値型

アニメーションのパターンを番号で制御する場合に使う。

Bool:true または false のいずれか

フラグによる制御をしたい場合に使う。

Trigger:オンオフを表すパラメーター。矢印を進むとオフになる。

一方通行な遷移をしたい場合に使う。

 

今回はtrueで立ち、falseで走りと設定するので、Boolを選択します。

名前を入力します。

f:id:n_obu1980:20210414085000p:plain

 

次に矢印を選択した状態で、インスペクターのConditionの”+”をクリックします。

f:id:n_obu1980:20210414085117p:plain

 

ここには矢印を遷移する条件を設定しますので、先ほど追加した条件を設定します。

f:id:n_obu1980:20210414085214p:plain

 

今度は逆側の遷移(走り→立ち)の設定もしていきます。

f:id:n_obu1980:20210414085350p:plain

 

同じように終了時間ありのチェックを外し、遷移間隔を0に設定。条件は今回はfalseを設定します。

f:id:n_obu1980:20210414085455p:plain

 

次に遷移をさせるためのスクリプトを作っていきます。

playerという名前のスクリプトにしました。

f:id:n_obu1980:20210414085932p:plain

 

以下の内容を入力して、スクリプトはアニメーションコントローラーを設定している画像のコンポーネントに追加します。

public class player : MonoBehaviour
{
    private Animator anim = null;

    // Start is called before the first frame update
    void Start()
    {
        anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        float horizontalKey = Input.GetAxis("Horizontal");

        if(horizontalKey > 0//右
        {
            transform.localScale = new Vector3(-111);
            anim.SetBool("run",true);
        }
        else if(horizontalKey < 0//左
        {
            transform.localScale = new Vector3(111);
            anim.SetBool("run",true);
        }
        else //入力なし
        {
            anim.SetBool("run",false);
        }

    }
}
 
 

f:id:n_obu1980:20210414091148p:plain

 

これでキーボードの矢印を押すと走るようになります。

 

Input.GetAxis()
Unityの入力を受け取る機能。入力の方向軸を受け取る。

 

transform.localScale = new Vector3(-1, 1, 1);

X軸をマイナスに設定すると反転する性質があるため、今回画像を片側方向しか用意していないので、反転するようにしています。