Conditionは「条件」という意味の単語だよ
みなさん、こんにちは!
僕のような「大人数の飲み会が苦手」なタイプは、自分が話せるかどうかではなく、 周りのみんなが楽しめているかどうか、を優先するとすごく楽になることを知ったあらたまです。
さて今日は「君がゲームを作る!Unityゲーム開発入門」の第48回目です。
おさらい
前回 はキャラクターのアニメーションクリップを作成しましたね。
今回は、アニメーションを表示していきましょう!
今日の内容は 第31回 横移動時のアニメーションを設定する で学習した内容からの発展になります。
詳細な内容は第31回の方で説明していますので、必要に応じてそちらもあわせて参照してみてくださいね。
表示状態を保持する変数
まずはどのアニメーション(前、後、左、右)を表示するかの情報を保持する変数(パラメーター)を用意します。
「Window」メニューの「Animation」から「Animator」をクリックします。
変数名を入力します。今回は「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を鳴らしてみたいと思います。
次回へ続く。