投稿者 tel | 2017年3月14日

ループしていないAnimatorのステートを即座に遷移させる

ループしないアニメーションの遷移でハマったのでメモ。

上昇したら止まって、適当なパラメータが有効になったら下降するアニメーションを作成する。

上記のようなステートをもつAnimatorControllerを用意する。up(3秒かけてy:0からy:5に上昇する)からdown(3秒かけてy:5からy:0へ下降する)への遷移はboolのパラメータがtrueの場合に遷移する。

このときupがループアニメーション出ない場合、up最後のフレームでアニメーションは止まっている。Has Exit Timeにチェックが入っているとパラメータがtrueになったときにすぐにdownに遷移せずに一定時間待つとdownのアニメーションが始まる。

どうやら表示的にはアニメーションのタイミングは最後までいっているが、内部的にはループしているため3秒ごとに遷移タイミングがきている。上昇アニメショーンが終わっていて、パラメータがtrueになったらすぐに下降アニメーションをさせたい。

解決方法

上記のようにステートを1つ追加する。ここで追加したloopのステートはアニメーションをつけないでWrite Defaultsのチェックもオフにする。

そしてupからloopへの遷移はHas Exit Timeを有効にして、loopからdownの遷移はHas Exit Timeを無効にしてパラメータがtrueのときに遷移するようにする。

こうすることでupのアニメーションが終わるとloopステートに遷移して、loopステートからdownステートへはHas Exit Timeが無効なのでパラメータがtrueになったら即座に遷移するようになる。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。