7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity】短いアニメーションからAnimator.CrossFadeでスムーズに遷移できない

Last updated at Posted at 2016-04-13

#結論
スクリプトリファレンスちゃんと読め!
http://docs.unity3d.com/jp/current/ScriptReference/Experimental.Director.IAnimatorControllerPlayable.CrossFade.html
http://docs.unity3d.com/ja/current/ScriptReference/Animation.CrossFade.html

#問題となった事象
Animator使用時に、ダメージやガードのような短いアニメーションからアイドリングへCrossFadeさせようとするとなぜか一瞬で遷移してしまう。
Animation(Legacy)のときはこれでキレイにいけたはずなのに何故じゃ。

anim.CrossFade("Idle", 0.3f);

#原因
Animator.CrossFadeのtransitionDurationとAnimation.CrossFadeのfadeLengthは仕様が違った。
transitionDurationfadeLengthは違う!!

タイプ 引数 内容
Animator transitionDuration CurrentStateの正規化された時間
Animation fadeLength 実時間

#Animator.CrossFadeで実時間遷移する方法
簡単ですが、一応載せておきます。

float fadeLength = 0.3f;    // 遷移させたい時間
float duration = fadeLength / anim.GetCurrentAnimatorStateInfo(0).length;
Animator.CrossFade("XXX", duration);

####追記
中の人に、CrossFadeInFixedTimeがあるよと教えていただきました。
http://docs.unity3d.com/ja/current/ScriptReference/Animator.CrossFadeInFixedTime.html
ちゃんとあったんですね、恥ずかしいですね。

#あとがき
Animatorがない頃からUnity使っている人がはまりそうだけど、そういう人はもうみんな知ってるよね。
スクリプトリファレンスちゃんと見ないとあかんよ!という自戒をこめて、初投稿。

いまだにAnimatorをしっかり使いこなしてない感ある。
みんなAnimatorControllerでtransitionうお~って繋げてたりするのかな。
自分はただのアニメーション登録リストとしてしか使ってない!

7
6
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
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?