キー操作でアニメーションを切り替える方法です。
簡易版
- 「待機」「歩行」アニメーションの用意。
- 「Animator」に「AnimatorController」をそれぞれ配置。
- 「Transition(矢印)」をそれぞれ作成。
- 条件変数を作成。
- それぞれの「Transition(矢印)」の設定。
- スクリプト作成。
- 適用オブジェクトにスクリプトをアタッチ。
- 適用オブジェクトに「Animator」コンポーネントを追加・設定。
各アニメーションを作成
今回は「歩行」ということで、「左向き待機」「左向き歩行」「右向き待機」「右向き歩行」の4つを作ります。
それぞれ「AnimationClip」と「AnimatorController」が出来上がります。
Animatorウィンドウでの作業
AnimatorControllerを配置
「左向き待機(standL)」の「AnimatorController」を基準にするためにファイルを開き、その他3つ(standR)(walkL)(walkR)の「AnimatorController」をドラッグして登録します。
Transitionを作成
各「AnimatorController」を関連付けるために「Transition(矢印)」で繋げていきます。
後に条件設定しますが、「左向き待機」から○○だったら「左向き歩行」へなどの流れ(矢印)を設定します。
配置されている「AnimatorController」を右クリックするとメニューが出ます。
「Make Transition」で矢印を作って繋げていきます。
最終的に、4つの「AnimatorController」が繋がるように「Transition」を繋げます。
条件変数を作成
スイッチのオンオフをするように、アニメーションを切り替える条件として「変数」を新規作成します。
左側にある「+」マークをクリックして変数リストを出します。
今回は「Bool」型の変数を作成します。
変数名は任意です。今回は「walk_L」「walk_R」の2つを作成しました。
条件変数の種類
- Float ・・・・・・・ 浮動小数点を条件にします。
- Int ・・・・・・・・ 整数を条件にします。
- Bool ・・・・・・・ 真理値(true/false)を条件とします。
- Trigger ・・・・・・ 特定条件(あるキーが押された場合を設定など)を条件とします。
Transitionの設定
条件変数を作成したら、各「Transiton」の設定をインスペクターで行います。
設定する「Transition(矢印)」をクリックしてインスペクターに表示させます。
ちなみにクリック状態の矢印は「Delete」キーで削除可能です。
「Has Exit Time」のチェックを外し「Transition Duration」を「0」にします。
今回は2Dアニメなので、アニメーションを切り替える際の補完を行わないようにします。
補完を設定していても2Dの場合は補完されずにラグが生まれるだけとなっています。
3Dを扱うとき用と覚えておきましょう。
「Conditions」の「+」を押し、作成した条件変数をセットします。
上記の場合、「左向き待機(standL)」から「左向き歩行(walk_L)」への「Transition(矢印)」なので、変数「Walk_L」が「true」になった場合をスイッチのオンと設定します。
これにより「左向き待機(standL)」の時に「Walk_L」が「true」だったら「左向き歩行(walk_L)」になるという設定になります。
各「Transition(矢印)」の設定も同じようにひとつずつ行っていきます。
条件変数のtrue/falseの設定に注意しましょう。
スクリプト作成
新規でスクリプトを作成します。
キーが押されているとき離れたときを条件とし、アニメ切換変数を設置します。
ファイル名は任意です。今回は「CharacterAnimationController」としました。
using UnityEngine;
public class CharacterAnimationController : MonoBehaviour
{
private Animator anim;
private void Start()
{
anim = GetComponent();
}
void Update()
{
float horizontalKey = Input.GetAxisRaw(“Horizontal”);
if (horizontalKey > 0) // 右に移動
{
anim.SetBool(“Walk_R”, true);
anim.SetBool(“Walk_L”, false);
}
else if (horizontalKey < 0) // 左に移動
{
anim.SetBool(“Walk_L”, true);
anim.SetBool(“Walk_R”, false);
}
else // 移動していない
{
anim.SetBool(“Walk_L”, false);
anim.SetBool(“Walk_R”, false);
}
}
}
適用キャラの設定
「CharacterAnimationController」スクリプトをアタッチします。
さらにコンポーネントを追加します。
設定した「AnimatorController」を扱えるようにします。
「Add Component」>「Animator」
「AnimatorController」である「standL」(配置や条件付けしたファイル)を「Controller」フィールドにドラッグして登録します。
テストプレイ
左側の「Animator」ウィンドウにて、アニメーションの遷移が行われていることも確認できます。
コメント