君がゲームを作る!Unityゲーム開発入門
第48回 キャラクターのアニメーションを設定する(後編)

Conditionは「条件」という意味の単語だよ

みなさん、こんにちは!

僕のような「大人数の飲み会が苦手」なタイプは、自分が話せるかどうかではなく、 周りのみんなが楽しめているかどうか、を優先するとすごく楽になることを知ったあらたまです。

さて今日は「君がゲームを作る!Unityゲーム開発入門」の第48回目です。

おさらい

前回 はキャラクターのアニメーションクリップを作成しましたね。

今回は、アニメーションを表示していきましょう!

今日の内容は 第31回 横移動時のアニメーションを設定する で学習した内容からの発展になります。

詳細な内容は第31回の方で説明していますので、必要に応じてそちらもあわせて参照してみてくださいね。

表示状態を保持する変数

まずはどのアニメーション(前、後、左、右)を表示するかの情報を保持する変数(パラメーター)を用意します。

「Window」メニューの「Animation」から「Animator」をクリックします。

アニメーターウィンドウが表示されました。

「Parameters」をクリックします。

右上の「+」をクリックして「int」をクリックします。

変数名を入力します。今回は「YusyaState」としてみました。

アニメーションの変化方向と条件設定

続いてアニメーションが変化可能な方向と、その条件を設定します。

「Yusya_Front」を右クリックして、「Make Transition」をクリックします。

「Yusya_Right」をクリックします。 これで「Yusya_Front」から「Yusya_Right」への変化が可能になりました。

続いて、変化の条件です。
いま追加された矢印をクリックして選択します。

インスペクターウィンドウで「Has Exit Time」のチェックを外し、 「Conditions」の「+」をクリックします。

「Conditions」を「Yusya_State」「Equals」「1」に設定します。

同じようにして「Yusya_Left → Yusya_Right」、「Yusya_Back → Yusya_Right」 の変化も設定します。

これで「Yusya_State」が「1」のときは、右向きのアニメーションが表示されるようになりました。

他の変化の設定

同じ手順を繰り返して、他のアニメーション変化の設定もしましょう。

「Yusya_State」が「2」のときは、「Yusya_Back」へ、

「Yusya_State」が「3」のときは、「Yusya_Left」へ、

「Yusya_State」が「0」のときは、「Yusya_Front」へ変化するようにします。

「Yusya_State」の値を設定する

あとはプレイヤーの操作に応じて「Yusya_State」の値を設定します。

プロジェクトウィンドウの「YusyaControl」を選択し、インスペクターウィンドウで「Open」をクリックします。

下記のように太字の部分を追加してください。

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

public class CharaControl : MonoBehaviour
{

    private const float SPEED = 0.1f;

    // アニメーター
    Animator animator;

    // Use this for initialization
    void Start()
    {
        // アニメーターコンポーネントを取得
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        Vector2 pos = transform.position;

        if (Input.GetKey("down"))
        {
            pos.y -= SPEED;
            animator.SetInteger("YusyaState", 0);
        }
        else if (Input.GetKey("right"))
        {
            pos.x += SPEED;
            animator.SetInteger("YusyaState", 1);
        }
        else if (Input.GetKey("up"))
        {
            pos.y += SPEED;
            animator.SetInteger("YusyaState", 2);
        }
        else if (Input.GetKey("left"))
        {
            pos.x -= SPEED;
            animator.SetInteger("YusyaState", 3);
        }

        transform.position = pos;
    }
}

テストプレイで動作確認をする

では、テストプレイしてみましょう!
上部中央の▶ボタンを押して、プレイモードに入ります。

最初は正面を向いて足ふみをしていますが、、

右矢印キーを押すと、右向きのアニメーションが、

上矢印キーを押すと、後向きのアニメーションが表示されました!

今回はここまでです!

次回はゲームのBGMを鳴らしてみたいと思います。

次回へ続く。

>> 続きの記事
【君がゲームを作る!Unityゲーム開発入門】第49回 BGMを鳴らしてみよう