ファイブボックス一分間Unity講座 アニメーションの発動タイミングを調整する方法のアイキャッチ画像
ファイブボックス一分間Unity講座 アニメーションの発動タイミングを調整する方法のアイキャッチ画像

1分間 Unity講座 Animatiの発動タイミングと速度の調整 - ファイブボックス

発動タイミングを調整するには Has Exit Time を調整します

1分間 Unity講座 Animatiの発動タイミングと速度の調整

前回の記事で、Animatorコンポーネントが持つ SetBool()メソッドを活用して、どのキーも押されていなければ if(!Input.anyKey)でIdling状態のアニメーションを、いずれかのキーが押されたら歩いているアニメーションを発動するプログラムをご紹介しました。

今回は左右の動きも併せて作成し、アニメーション発動のタイミングを管理していきたいと思います。

Youtubeショート動画「一分間Unity講座 Animatiの発動タイミングと速度の調整」の補足説明にもなっていますので、気になる方は次の動画も併せてご確認ください。

左右の動きのプログラム

前回のコードを改造し、「Dキー」が押されたら右に、「Aキー」が押されたら左に移動するプログラムを作成してみましょう。

void Update()
{
    if (!Input.anyKey)      //何も押されていなければ
    {
        animator.SetBool("IsWalk", false);  //待機状態のアニメーション
    }
    else                    //何かが押されていたら
    {
        animator.SetBool("IsWalk", true);   //走るアニメーション
        //Dキーた押されている間
        if(Input.GetKey(KeyCode.D))    
        {
		   //右に移動
            transform.position += transform.right * Time.deltaTime;
		   //右を向く
            transform.rotation = Quaternion.Euler(0, 0, 0);  
        }
        //Aキーが押されている間
        if (Input.GetKey(KeyCode.A))
        {
		   //左に移動
            transform.position += transform.right * Time.deltaTime;
            //左を向く 
            transform.rotation = Quaternion.Euler(0, 180, 0); 
        }
    }
}

この状態で左右の動きができました。

Animationの発動タイミング

現状、移動と同時にAnimationが動くのではなく、若干遅れて発動していると思います。

UnityではAnimationのTransitionを作成した場合、初期状態では下の様に「Has Exit TIme」にチェックが入っている(true)状態になります。

UnityのAnimator、HasExitTimeの活用

「Has Exit TIme」が true のとき、アニメーションは終了時間(Exit Time)に到達するまで、Transition は発生しません。つまり、アニメーションが完全に再生されてから次のアニメーションに移行します。

一方、「Has Exit TIme」が false の時は、設定された条件が満たされたならば現在のアニメーションが途中であっても次のアニメーションに即座に切り替わります。

今回は、「PicoWalking」⇒「PicoIdle」、「PicoIdle」⇒「PicoWalking」どちらの条件の時も、「Has Exit TIme」を false にしておきます。

UnityのAnimator、HasExitTimeの設定
  • アニメーションの連続性: 滑らかなアニメーションの切り替えを保ちたい場合は、Has Exit Timeを有効にすることが多いです。
  • 反応性: ゲームプレイのレスポンスを重視する場合や、特定の条件に即座に反応させたい場合は、Has Exit Timeを無効にすることが一般的です。

AnimationのSpeed

サンプルでは PicoIdling のアニメーションがとても速いようです。Animationの速度を調整する方法はいくつかありますが、今回は2つの方法をご紹介します。

AnimationClip の調整

AnimationClip を作成したタイミングでは、2つの素材が0.01秒間隔で詰まって配置されます。

この間隔をずらすことで、Animationの速度を調整することができます。しかし、2つ目素材の直後に1つ目の素材が呼び出されるので、1枚目の素材を最終フレームに配置するなど、タイミングに留意する必要があります。

素材によって違うタイミングで繰り返されるAnimationなどで活用する方法です。

UnityのAnimationClip の変更

Animation の speed

各Animation の Inspector の Speedプロパティ を直接変更することで、Animationの速度が変更します。

UnityのAAnimationのspeed

こちらは比較的簡単に変更することができるので、おすすめです。

また次の様にプログラムから指定することもできます。

Animator animator;  //Animatorコンポーネントを管理する変数
void Start()
{
    //animator にAnimatorコンポーネント代入
    animator = GetComponent<Animator>();
	animator.speed = 0.2f;  //Animationのspeed を0.2fに
}

ファイブボックスでは、Unityの個別指導のオンラインレッスンを行っています。

ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。

TOP