DOTweenとAnimatorを組み合わせた巻き戻し
と早送り
アニメーションを実装してみます。
2通りの実装方法
再生中のTweenに対して巻き戻すメソッド、通常の再生に戻すメソッドが存在します。
PlayBackwards
(巻き戻しメソッド)PlayForward
(元に戻すメソッド)
この他にtimeScale
変数を変更する方法があります。
tween.timeScale = -1f;
マイナス値
を代入することで巻き戻し再生をします。
tween.timeScale = 1f;
正の値
で通常の再生に戻します。
早送りしたい場合は、この値を1fより大きい値
に設定するだけです。
Animatorの巻き戻し方法
以前はAnimatorクラスのspeedプロパティ
をいじるだけで良かったのですが、Unity5からは仕様変更が入ったようです。
// Unity5からはこの設定ではspeed == 0とみなされてアニメーションがストップします。 animator.speed = -1f; // ※この実装では巻き戻りません
※こちらの記事を参考にさせて頂きました。
動的アニメーションスピード変更のための準備
1.Animator Parametersにfloat
指定のSpeedキーを追加します。
2.再生速度を変更したいAnimationClipがアタッチされたAnimatorのStateを選びます。
※今回の例だとRunning(Loop)のみ
3.上図のようにインスペクタからステートの設定をします。
animator.SetFloat ("Speed", -1f);
すると上記のコードで意図通りの巻き戻り再生が出来るようになります。
完成品
SD Unity-chanにAddComponentしているクラスはコチラ。
補足
最後の着地でジャンプしているところはAnimatorControllerを調整しています。
Animator Parametersにstring型指定でIdle
というキーを定義します。
AnyState
からTopToGround
にTransitionを設定して、矢印を選択肢インスペクタへ。
Conditions
にIdle
をセットします。
この設定で以下のコードでアニメーションが遷移します。
animator.SetTrigger ("Idle");