[Unity備忘録] Spriteアニメーションで走る。
前回のあらすじ。2Dスクロールアクションの基礎部分を作った。
しかし、単なる画像のスライド移動だけでは寂しい。せめて移動時には走ってほしい。
というわけで今回の実装では、プレイヤーの移動時に、走りアニメーションを再生する。
Unityのアニメーション
ざっくり言うと、Unityのアニメーションは
Animation(アニメーション本体)
AnimatorController(アニメの状態遷移を行うコントローラ)
で構成されている。
格ゲーの例で言うと、蹴りやパンチ等のモーションがAnimation。Aボタンを押すと強攻撃、Bボタンを押すと必殺技を繰り出す、といったアニメーションの切り替えがAnimatorController。
アニメーションにも種類があるけれど、今回扱うのはSpriteアニメーション。画像を連続で表示してアニメーションする、いわゆるパラパラ漫画方式。
AnimatorControllerの作成
PlayerオブジェクトにAnimatorコンポーネントを追加。
Assets>Animフォルダ下にAnimatorControllerを追加。AnimatorのControllerに設定。

Animationの作成
Assets>Animフォルダ下にAnimationを作成。
アニメーションの編集画面が出るので、タイムラインに、コマの画像をドラッグ&ドロップ。

一枚の画像(Sprite)の切り分けは、前回のタイルパッレト作成あたりを参照。
ループさせるなら最初と最後の画像は同じにしておくとGood。
AnimatorControllerの設定
Animationを追加するときは、Create Stateで状態を作成し、MotionにAnimationを設定する。
遷移の矢印を追加するときはMake Transition。

Transition設定
状態遷移矢印の設定。下画像は、立ちアニメ→走りアニメ。
Has Exit Timeにチェックを入れると、アニメーションの終了時、自動で次の状態へ遷移する。今回はいらないので外す。
Settingsの詳しい説明は公式のドキュメントへ。最初はそんなに気にしなくて大丈夫(多分)。

重要なのは、Conditions。これは、矢印による遷移が起こる条件を表している。今回はisRunがtrueのとき、この遷移が行われることにした。
Conditionsに使える変数はParametersから追加する。
追加できる値は、float、int、bool、trigger。型によって、使える条件式が異なるので注意。
C#からアニメーションを制御。
変数がBoolならSetBoolから、値を操作する。
public class PlayerController : MonoBehaviour
{
// ...
private Animator animator;
void Start()
{
// ...
animator = GetComponent<Animator>();
}
void Update()
{
// ...
animator.SetBool("isRun", true);
// ...
animator.SetBool("isRun", false);
}
}
というわけでできた。

正直、プログラムよりも、アニメーションのコマを用意する方が大変じゃった。
以下、参考
- 【2025】Unityで2Dアニメーションを作るには?手順とコツも詳しく解説
- UnityのAnimationControllerの簡易的な解説
