アニメーションの切り替え時に余計な動きが入ることがありました。
今回は、ある一例の紹介と修正方法を紹介します。
押さえておきたいこと |
|
まず、問題のアニメーションです。
剣を振るときの仕草ですが、振りかぶる前に詰まったような動きが入ってしまっています。
(クリックで再生)
アニメーションの遷移は次の図のようになっています。
赤枠で示した「Settings」を展開してみると詳しいパラメータを見ることができます。
「遷移間隔」に”0.25”と入っています。
この値を"0"にすると動きが変わります。
(クリックで再生)
アニメーションが終わったのに最初のフレームが映ってしまう問題
この日記を書いた後に気が付いたことです。
アニメーションが終わった後に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
大変参考になりました。有難うございます!