こんにちわ、DOTween大好きオオバです。

DOTweenとAnimatorを組み合わせた作品の
巻き戻し早送りを実装していきます。

DOTweenとAnimator連動「巻き戻し」と「早送り」の実装方法_0

DOTween、Animatorそれぞれ実装していきますが、
DOTweenには2通りの方法があります。

この記事の内容

DOTween 方法1. 巻き戻しメソッドを使用する

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

【サンプルコード】

var tween = transform.DOLocalMoveX(10f, 1f);  

// 巻き戻し  
tween.PlayBackwards();  

// 元の再生に戻す  
tween.PlayForward();  

DOTween 方法2. タイムスケールを変更する

DOTweenのTweenインスタンスにはtimeScale 変数を変更する方法があります。

【サンプルコード】

var tween = transform.DOLocalMoveX(10f, 1f);  
// 巻き戻し  
tween.timeScale = -1f;  

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

var tween = transform.DOLocalMoveX(10f, 1f);  
// 元の再生に戻す  
tween.timeScale = 1f;  

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

早送りしたい場合は、この値を1fより大きい値に設定するだけです。
逆にスローモーションにしたい場合は0 〜 1の値にします。

Animatorの巻き戻し方法

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

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

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

DOTweenとAnimator連動「巻き戻し」と「早送り」の実装方法_1

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

DOTweenとAnimator連動「巻き戻し」と「早送り」の実装方法_2

2.再生速度を変更したいAnimationClipがアタッチされたAnimatorのStateを選びます。

DOTweenとAnimator連動「巻き戻し」と「早送り」の実装方法_3

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

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

すると意図通りの巻き戻り再生が出来るようになります。

完成品

DOTweenとAnimator連動「巻き戻し」と「早送り」の実装方法_4

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

DOTweenTest.cs · GitHub

補足

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

DOTweenとAnimator連動「巻き戻し」と「早送り」の実装方法_5

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

DOTweenとAnimator連動「巻き戻し」と「早送り」の実装方法_6

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

DOTweenとAnimator連動「巻き戻し」と「早送り」の実装方法_7

ConditionsIdleをセットします。

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

animator.SetTrigger ("Idle");  

もっと詳しくDOTweenのことを知りたい方は、
DOTweenの教科書を読んでみてください。
DOTweenの教科書

期間限定 最大95%オフセール
効率UPメガバンドル開催中!最大95%オフ!!!
期間 : 11月1日午後15時59分まで
オススメ記事
検証環境