DOTweenでDelayとLoopを併用する際に毎ループDelayする方法

Unityの便利アセット「DOTween」は、簡単にイージングアニメーションを実装することができるアセットです。

めちゃくちゃお世話になっています。

DOTweenには指定時間後にアニメーションを実行するDelayと、アニメーションが終わった後に再度実行するLoopというものがあります。

このDelayとLoopはかなり多用するのですが、併用する際に困ることがあります。

例えば
【「1秒待つ」→「3秒かけて2倍に拡大する」】を無限ループしたい場合。

transform.DOScale(2f, 3f).SetDelay(1f).SetLoops(-1);

このように書きがちですが、これだと
「1秒待つ」→【「3秒かけて2倍に拡大する」を無限ループ】
になってしまいます。

つまり最初だけ1秒待機して、あとは拡大処理を連続で無限ループする状態。

これは意図したアニメーションではありません。

毎ループDelayする方法

毎ループDelayを入れ込むには、Sequenceを利用します。

var sequence = DOTween.Sequence();
sequence.Append(transform.DOScale(2f, 3f).SetDelay(1f))
        .SetLoops(-1);
sequence.Play();

このようにSequenceを生成して【「1秒待つ」→「3秒かけて2倍に拡大する」】をAppendし、それを外からSetLoops(-1)することで実現できます。

少し手間にはなりますが、意図したアニメーションになりました。

コメント