【unity】Animatorとスクリプトを使ったアニメーション
first:2022/10/20 update:2022/10/23
Unity version : 2021.1.2.7f1 Personal(日本語化済み)

アニメーションの切り替え時に余計な動きが入ることがありました。
今回は、ある一例の紹介と修正方法を紹介します。

押さえておきたいこと
  • インスペクターのSettings を開く
  • 「遷移間隔」を0にする

まず、問題のアニメーションです。
剣を振るときの仕草ですが、振りかぶる前に詰まったような動きが入ってしまっています。
(クリックで再生)









アニメーションの遷移は次の図のようになっています。

赤枠で示した「Settings」を展開してみると詳しいパラメータを見ることができます。


「遷移間隔」に”0.25”と入っています。
この値を"0"にすると動きが変わります。
(クリックで再生)









(2022/10/23(日)追記)

アニメーションが終わったのに最初のフレームが映ってしまう問題

この日記を書いた後に気が付いたことです。
アニメーションが終わった後に1フレーム前後ですがそのアニメーションの 1フレーム目が表示されてしまう事がある問題を見つけました。

私なりの回避方法は次のようになります。 まず、自キャラのスクリプトに AttackEnd() という関数を作ります。内容は

animator.Play( "Idle", 0, 0f);

と書きました。これは、Idle状態のアニメを再生するようにしたものです。

Animator animator.Play( string, layer, time) 関数について
第1引数:アニメーション名
第2引数:アニメーション名があるレイヤー
第3引数:再生位置(0 ~ 1.0f)

次にアニメーション内の最後フレームの手前にイベントを追加します。

ゲーム中にアニメーションを再生すると終了フレームの手前で"Idle"状態に移るので問題を解決できました。

今回はアニメーションの遷移時間についてでした。
また、問題の報告が遅くなり申し訳ありませんでした。
次に生かすべく努力したいと思います。

最後まで閲覧していただきありがとうございました。

参考文献

Unityのアニメーションの切り替えシステムとスクリプト (かめくめ氏)
https://gametukurikata.com/animationanimator/changeanimation
アニメーションの再生位置をスクリプトで管理する (taskem氏)
https://taskem1985.tumblr.com/post/122781367127

大変参考になりました。有難うございます!

ページトップ