渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

DOTweenとAnimator組み合わせの巻き戻しと早送り実装


f:id:esakun:20150825162207p:plain

DOTweenとAnimatorを組み合わせた巻き戻し早送りアニメーションを実装してみます。

2通りの実装方法

再生中のTweenに対して巻き戻すメソッド、通常の再生に戻すメソッドが存在します。

  • PlayBackwards(巻き戻しメソッド)
  • PlayForward(元に戻すメソッド)

この他にtimeScale 変数を変更する方法があります。

tween.timeScale = -1f;

マイナス値を代入することで巻き戻し再生をします。

tween.timeScale = 1f;

正の値で通常の再生に戻します。

早送りしたい場合は、この値を1fより大きい値に設定するだけです。

Animatorの巻き戻し方法

以前はAnimatorクラスのspeedプロパティをいじるだけで良かったのですが、Unity5からは仕様変更が入ったようです。

// Unity5からはこの設定ではspeed == 0とみなされてアニメーションがストップします。
animator.speed = -1f;
// ※この実装では巻き戻りません

こちらの記事を参考にさせて頂きました。

動的アニメーションスピード変更のための準備

f:id:esakun:20161220015522p:plain

1.Animator Parametersにfloat指定のSpeedキーを追加します。

f:id:esakun:20161220015443p:plain

2.再生速度を変更したいAnimationClipがアタッチされたAnimatorのStateを選びます。
※今回の例だとRunning(Loop)のみ

f:id:esakun:20161220015415p:plain

3.上図のようにインスペクタからステートの設定をします。

animator.SetFloat ("Speed", -1f);

すると上記のコードで意図通りの巻き戻り再生が出来るようになります。

完成品

f:id:esakun:20161220013955g:plain

SD Unity-chanにAddComponentしているクラスはコチラ。

gist.github.com

補足

最後の着地でジャンプしているところはAnimatorControllerを調整しています。

f:id:esakun:20161220021702p:plain

Animator Parametersにstring型指定でIdleというキーを定義します。

f:id:esakun:20161220022102g:plain

AnyStateからTopToGroundにTransitionを設定して、矢印を選択肢インスペクタへ。

f:id:esakun:20161220022402g:plain

ConditionsIdleをセットします。

この設定で以下のコードでアニメーションが遷移します。

animator.SetTrigger ("Idle");

あわせてどうぞ

www.shibuya24.info

www.shibuya24.info

www.shibuya24.info

www.shibuya24.info

www.shibuya24.info

www.shibuya24.info