0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hamster OutputAdvent Calendar 2024

Day 15

【Unity】AnimatorCrossFadeのすすめ

Last updated at Posted at 2024-12-25

はじめに

この記事はHamster Output Advent Calendar 2024の15日目の記事です!

今回の記事は最近使い始めたAnimatorCrossFadeについて調べた内容です。

参考にしたリンク

何ができるか

Animatorのステートからステートへの遷移をスクリプトから行うことができます。画像だと矢印で繋がっている部分です。

image.png

結論

早い段階で結論を書いておくと、Animatorの遷移図がぐちゃぐちゃになる問題を解決することができます。Animatorの見にくさで困っている方はぜひ、使って見てください。

使い方

書き方は以下の通りです。

animator.CrossFade(ステート名, 遷移にかかる時間, レイヤー番号, アニメーションの開始位置,);

ソースコードにするとこんな感じになります。レイヤーとアニメーションの開始位置は入力しなくても利用できます。

public class Test : MonoBehaviour
{
    [SerializeField]
    private Animator _animator;

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Z))
        {
            _animator.CrossFade("Idle", 0.3f);
        }

        if (Input.GetKeyDown(KeyCode.X))
        {
            _animator.CrossFade("Walk", 0.3f);
        }
    }
}

実行して、ZやXを押してみるとAnimatorが切り変わります!

image.png

画像じゃあまり伝わらないけど滑らかにAnimationが切り替わっていることが分かる...

image.png

メリット

・AnimatorでAnimationの矢印を作成する手間が無くなる
・Animatorがぐちゃぐちゃにならない
・Animationを追加するだけで良い

普通にAnimatorで遷移図を作ると大体こうなると思いますが...
image.png

AnimatorCrossFadeを利用する場合、線を繋ぐ必要が無いのでAnimatorがスッキリします。
image.png

デメリット

・ステート名の入力が面倒
・Animatorのレイヤー内を総当たりして確認しているらしく、Animationが多ければ多い程負荷がかかる

ステート名の取得が面倒な部分はEditor経由で取得も可能です。良さそうな記事もありました。

FixedInTimeについて

CrossFadeともう一つ、CrossFadeInFixedTimeというものがあり、CrossFadeは正規化された時間でCrossFadeFixedInTimeは実際の時間という違いがあるらしいです。

※この違いはよく分かっていない...💦

まとめ

Animatorがとても綺麗になるので遷移図の見にくさで悩んでいる人は使ってみても良いかも...。

スクリプトから、制御できることから細かい調整もしやすいし。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?