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)することで実現できます。
少し手間にはなりますが、意図したアニメーションになりました。
コメント