投稿者 tel | 2015年2月13日

Unityでアニメーションをもう一度再生する

Unity の Animator でワンタイムのアニメーションをもう一回再生するときの方法。

ss

下のようにアニメーションが1つのステートで再生する場合、アニメーション再生が終わってもステートは変わらない。

state

このとき Any State から Trigger などで遷移を作って Animator.SetTrigger してもアニメーションを再度再生することはできない。
再度再生するにはオブジェクトをいったん無効にして再度有効にするか、もしくは Animator.Play を呼び出す。

Animator _animator = GetComponent<Animator>();
var info = _animator.GetCurrentAnimatorStateInfo(0);
_animator.Play(info.nameHash, 0, 0.0f);

Play の第三引数として再生開始時間に0を渡すとアニメーションを頭から再生できる。

非推奨のメソッドで Animator.ForceStateNormalizedTime でも再生時間を0にしたらできそう。


コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

カテゴリー

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