【Unity】2DAnimationEventが呼ばれない時の対処法

ゲームプログラマーの悟です

この記事では

  • AnimationEventが呼ばれない
  • 調べてみても初歩的なところで間違えていそうで違う気がする
  • 公式のドキュメントを読んだけど解決しない

という人のために、実際に悟も躓いたココ見てみてはいかがでしょうを紹介します

悟

私もX(旧Twitter)でつぶやいたものになります

アニメーション遷移の設定で、別のステートからステートへ切り替わる際のブレンドをすぐに切り替えていませんか?

画像のようになっている場合、「run-Animation」の後半が 「Idle-Animation」に切り替わっているためAnimationで指定したAnimationEventが遷移の影響で反応していないことがあります

上記の図のように修正すると、AnimationEventが動くようになります

Animationが最後まで再生されず次に遷移しているため動いていません

詳細を解説します

1.2つ以上のアニメーションがトランジションでつながっている

2.トランジションのインスペクターを変更している

3.遷移前のアニメーションでAnimationEventを設定している

4.Playerに以下のPlayerクラスのスクリプトがアタッチされている
※ご自身の環境に当てはめて見て下さい

まずは、インスペクターで調整したものを見てみましょう

Animatorの問題が起こっているトランジションを選択してインスペクターを見てみると、
このようにしている場合があると思います

矢印で指している場所は、再生されていません

イメージで表すとこのAnimationの赤い部分が再生されていないので、AnimationEventが発生していません

実際に、この状態で実行してみると、

何も描画されません

そこで、Animatorのトランジションを選びインスペクターに
表示される切り替えタイミングを変更します

もう一度実行してみると

動きました!!

今回は2DAnimationEventが呼ばれない時の対処法について紹介しました

初歩的ですが、Unityは様々なところで設定を変更して意図しない動きになるケースが多いので
参考になれば幸いです

コメント

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