この記事でのバージョン
Unity 2018.4.20f1
DOTween Pro 1.0.178
はじめに
Unityで位置や大きさなどのアニメーション、
いわゆるTweenを実装するアセットとしてお馴染みのDOTween。
DOTween Pro | Visual Scripting | Unity Asset Store |
今回はそのDOTweenで途中終了、 一時停止、再開、リスタートする方法の紹介です。
イメージとしては以下のような感じ。
なお、記事中では以下のアセットを使っています。
Animals - Simon the Raccoon | 3D Animals | Unity Asset Store |
Tweener
まず、DOTweenはDOMove等を実行した時にTweenerCoreが返り値として取得出来ます。
//DOMove実行と同時に返り値としてTweenerCoreを取得 TweenerCore<Vector3, Vector3, VectorOptions> tweenerCore = transform.DOMove(new Vector3(4.4f, -0.5f, -4.7f), 5f);
このTweenerCoreを使って、途中終了等を実装していくわけなんですが、
TweenerCoreの引数は各処理によって変わるため、基本的には
TweenerCoreの継承元であるTweenerで取得すると使い勝手が良いです。
//DOMove実行と同時に返り値としてTweenerを取得 Tweener tweener = transform.DOMove(new Vector3(4.4f, -0.5f, -4.7f), 5f);
さて本題の途中終了、 一時停止、再開、リスタートの実装方法ですが、
なんと以下のように先程出てきたtweenerの各メソッドを実行するだけ。
//途中終了 tweener.Kill(); //一時停止 tweener.Pause(); //再開(もしくは実行) tweener.Play(); //リスタート(最初から再生) tweener.Restart();
例えば以下のようにアライグマがDOMoveで移動後、アニメーションを変更するような場合
//手前に向かって歩いてきた後、座るアニメを実行 Tweener tweener = transform .DOMove(new Vector3(4.4f, -0.5f, -4.7f), 5f) .OnComplete(() => { GetComponent<Animator>().CrossFade(Animator.StringToHash("Sit"), 0.5f); });
途中終了(Kill)、 一時停止(Pause)、再開(Play)、リスタート(Restart)を実行してみると以下のような感じ。
ただし、一時停止の時にAnimatorを無効にし、再開時に有効にしています。
なお、Killの引数(complete)をtrueにすると途中終了ではなく、
瞬時に最後まで実行した感じになり、OnCompleteも実行されます。
//途中終了(最後まで瞬時に実行) tweener.Kill(true);
ちなみにアニメーションを結合して使うSequenceでもKillやPause等の同様の操作が可能です。