2011年10月13日木曜日

AnimationのCrossFadeについてメモ

AssetStoreに無料のアニメーション付きモデルSpartanKingを見つけました
Unity入門を読んでAnimationについて知ったことなので、実際にアニメーション制御スクリプトを書いてみました。

Unity入門読んだ通り、PlayとCrossFadeを試しつつちゃんと再生されてクロスフェードされているのを確認していたところ、問題が起きました。
どうもCrossFadeなのにアニメーションが補間されなくて、飛んでしまいます。
どうやらClampForeverかLoop設定になっていないアニメーションの場合、CrossFadeをしてもアニメーション補間してくれないようです。補間しようにもアニメの再生が終わっていて、CrossFadeを実行しても補間先のアニメはあるけど、補間元のアニメは再生されていないからだと思います。しっかり調べてはいませんが・・・

ということで、CrossFadeしたいアニメの場合はClampForeverかLoop設定にしておくのが無難でしょう。
私は攻撃アニメだからLoop設定しないままスクリプトを書いていて、アレコレ悩みました

Animation.wrapModeについてのReference
http://unity3d.com/support/documentation/ScriptReference/Animation-wrapMode.html

追記(2013/4/24)
ClampForever時にアニメーションが終了フレームかどうかは
if(animation["hoge"].length <= animation["hoge"].time){
  animation.CrossFade("huga");
}
でいいと思います。
lengthがアニメーションの最大長,timeが現在再生アニメの時間なので。
floatなので==よりは<=がいいでしょう。

0 件のコメント:

コメントを投稿

このガジェットでエラーが発生しました