【Unity入門】歩行時アニメーションの作り方|Animatorで「待機⇔歩く」を切り替えよう

Unity2Dテクニック

こんにちは!夜の街2Dアクションゲームを制作中の怪獣です🦖
今回は 2Dキャラの「歩行」時のアニメーションを を Unity で作る方法を解説します!

手順としては、

  • 待機、歩行用の画像を用意する
  • Animation Clip(歩くアニメ)を作成する
  • Animator で 待機(Idle)⇔歩行(Walk) を条件で切り替える設定をする
  • スクリプトにアニメーションを切り替える処理を作成する

という流れです。

歩いているとき⇒歩行アニメーション、
止まっているとき⇒歩行アニメーションを停止
というイメージで作っていきます🦖

事前準備:歩行用の画像を用意する

「歩行」アニメーション画像を用意します。
ここでは、筆者が作成した画像を使用します。
(画像がない方は、以下のフリーの素材を使用することもできます↓)

Simple 2D Platformer Assets Pack | 2D Characters | Unity Asset Store
Elevate your workflow with the Simple 2D Platformer Assets Pack asset from Goldmetal. Find this & more Characters on the...

①歩行アニメーションを作る

まず初めにAnimation Clipを作成します。
Animation Clipとは、具体的な動きのデータを保存したアセットファイルのことです。
(拡張子.animが付きます。)

  1. ProjectタブのAssertフォルダを選択し、「Animation」フォルダを作成する
  2. 「Animation」フォルダを選択し右クリックでCreate > Animation ボタンを押す
  3. ファイル名を 「Walk」 にして保存する
    • inspector
      • Loop Time:✅をつける(アニメーションがループで再生されるようになります)
  4. 同様に、「Idle」アニメーションも作っておきます

②AnimationControllerを作成する

次に、アニメーションの切り替えを管理する「AnimationController」を作成します!
AnimationControllerを作成したら、Playerオブジェクトと紐づけるようにします。

  1. 「Animation」フォルダを選択し右クリックでCreate > AnimationController ボタンを押す
  2. ファイル名を 「Player」 にして保存します
  3. Playerオブジェクトを選択し、AddComponentで以下を追加します
    • Animator
  4. Animator設定
    • Controller:2で作成したAnimationControllerをドラッグ&ドロップします


③Animator に Idle / Walk を配置する

作成したAnimation Clip(歩行、待機アニメ)を、使用するためにAnimatorに配置していきます。
Animatorとは、オブジェクトを動かす実体(司令塔)です。
②で作ったAnimator Controllerを読み込み、最終的にアニメーションを再生する役割をしています!

  1. AnimationControllerをダブルクリックし、Animator ウィンドウを開く
  2. Animator ウィンドウに「Walk」、「Idel」をドラッグして配置する
  3. Idle を右クリック → Set as Layer Default State(最初は待機にする)
    • 「Entry」⇒「Idle」に紐づくようになります
    • 「Entry」はゲーム起動時に再生されるアニメーションです

④アニメーションを作る

ここで実際に動くアニメーションを作成していきます!

歩行アニメーションを作る

  1. Walk.anim をダブルクリックする(Animationウィンドウが開きます)
  2. プレイヤーオブジェクトを選択する
  3. 歩行用の画像をを Animationウィンドウにドラッグ&ドロップして配置します

これでタイムラインに画像が並び、歩行アニメが完成します!🚶
▶ボタンを押すと再生速度を確認できます。
(当記事では2コマで作成していますが、もっと画像を増やしても大丈夫です🙆)

今回は歩行アニメーションのみ作っていますが、Idol.animにも同様にアニメーションを作ることでより本格的な仕上がりにできます


⑤アニメーション切り替え設定

次に、
「止まっている時はidol、動いたらWalk」
という切り替えを作ります!


パラメータを作成

アニメーションを切り替えるためのパラメータ(フラグ)を追加します。
AnimationControllerを再度開き、Animatorの+ボタンで「Bool」を追加します。
名前は「Walk」にします。


遷移(Transition)を設定

Idle → Walkへの切り替え

Idle → Walkへアニメーションを紐づけるようにします!
以下を設定します。

  • Idle を右クリック – Make Transitionを押下
  • Idle⇒Walkに矢印を紐づける
  • Idleをクリック
    • Has Exit Time:OFF(今のアニメを最後まで再生するか設定するもの)
    • Setting
      • Transition Duratio:0(切り替え時のなめらかさ(重なり時間))
    • Conditions
      • Walk:trueを設定

Has Exit TimeOFFにすることで、アニメーションが瞬時に切り替わるようになります。
Walk:trueになることで、Walkアニメーションが発動するようにしています。

Walk → Idleへの切り替え

Walk → Idleも同様に設定をします。

  • Walkを右クリック – Make Transitionを押下
  • Walk⇒Idleに矢印を紐づける
  • Walkをクリック
    • Has Exit Time:OFF(今のアニメを最後まで再生するか設定するもの)
    • Setting
      • Transition Duratio:0(切り替え時のなめらかさ(重なり時間))
    • Conditions
      • Walk:falseを設定


Walk:falseになることで、Idle状態に切り替わり、Walkアニメーションを停止するようにしています。


⑥切り替える処理をつくる

最後に、スクリプトにアニメーションを切り替える処理を追加します!(コピペOK)

using UnityEngine;

public class Player: MonoBehaviour
{
    private Animator _anim;

    private void Start()
    {
        _anim = GetComponent<Animator>();
    }

    private void _Move()
    {
       _anim.SetBool("Walk", Mathf.Abs(_inputDirection.x) > 0.1f);
    }
}

各処理の説明

private Animator _anim;

➡️「Animatorコンポーネントを入れておくための箱」を用意しています。


void Start()
{
    _anim = GetComponent<Animator>();
}
  • プレイヤー自身についている Animator を取得
  • _anim 変数に保存する

このあと_anim.SetBool(…)

のように Animator を操作したいからです。


private void _Move()
{
    _anim.SetBool("Walk", Mathf.Abs(_inputDirection.x) > 0.1f);
}

_anim.SetBool(“Walk”, true or false);

これは、

Animatorにある「Walk」というBoolパラメータの値を
true / false に変更する

ということをしています。


Animator側ではこうなっています

Walkの値再生されるアニメ
falseIdle
trueWalk

つまりこの1行で、

  • Walk = true → 歩行アニメ
  • Walk = false → 待機アニメ

が切り替わるようになっています!


Mathf.Abs(_inputDirection.x) > 0.1f<br>

Mathf.Abs()は、絶対値 を取る関数です。
ここではプレイヤーが移動しているか?を判定しています。
プレイヤーを動かしていないのに移動中と誤判定されることがあるので、> 0.1としています。

動作確認

歩いているとき⇒歩行アニメーション、
止まっているとき⇒歩行アニメーションを停止
という感じで切り替えるようになりました🚶


まとめ

最後まで読んでいただきありがとうございました。
今回の記事をまとめると、

  1. Animation Clip でアニメーション実体ファイルを用意
  2. Animator Controllerでアニメーションを切り替える
  3. 画像をドラッグしてアニメーションを作る
  4. 切り替え用のパラメータを用意
  5. スクリプト側で切り替え処理を実装

上記の手順で解説させていただきました。
この記事が少しでもゲーム制作のお役に立てたらうれしいです🦖

コメント

タイトルとURLをコピーしました