DOTweenとは?

DOTweenは、非常に人気のあるUnity用のTweenアニメーションライブラリです。

簡単なコードを記述するだけで、移動、回転、スケーリング、フェードなど

よくあるスムーズなアニメーション表現を簡単に実装できるのが特徴です。

AssetStoreから無料でダウンロードでき、簡単にプロジェクトに導入できます。

DOTweenの特徴

Transform系などのアニメーションが簡単に書ける

DOTweenをインポートすると、TransformなどUnityの基本的なクラスに対して大量の拡張メソッドが使用可能になります。

それらを使って、移動や回転などのアニメーションが簡単に作成できます。

コールバックも設定できる

開始した時、完了した時などにコールバックを設定できます。

終了を待って次に進むような処理も簡単に実装できます。

複数のアニメーションを連結して再生

シーケンス機能を使って複数のアニメーションを連結して実行できます。

例えば、スケーリングしながらフェードアウトさせる、などです。

基本的なアニメーションの例

簡単な例をいくつか紹介します。

他にもたくさんの拡張メソッドがあります。

移動

1秒掛けて、X座標を2へ移動できます。

using DG.Tweening;

private void Start()
{
    transform.DOMoveX(2f, 1f);
}

回転

1秒掛けて、各軸を回転できます。

using DG.Tweening;

private void Start()
{
    transform.DORotate(new Vector3(90f, 180f, 90f), 1f);
}

スケール

1秒掛けて、スケーリングします。

using DG.Tweening;

private void Start()
{
    transform.DOScale(2f * Vector3.one, 1f);
}

フェード

CanvasGroupの拡張メソッドを使って、不透明度もアニメーションできます。

using DG.Tweening;

[SerializeField] private CanvasGroup _canvasGroup;

private void Start()
{
    _canvasGroup.alpha = 1f;
    _canvasGroup.DOFade(0f, 1f);
}

その他の機能

DOTweenTweenerオブジェクトを返すメソッドチェーン形式で設計されており、

そのため処理を連結して記述することができます。

遅延

開始するタイミングを遅らせることができます。

transform.DOMoveX(2f, 1f)
    .SetDelay(0.5f); // 0.5秒遅らせる

ループ

ループ再生する回数と方法を指定できます。

SetLoops(5, LoopType.Yoyo); // 5回言ったり戻ったりする

コールバック

  • OnStart
  • OnUpdate
  • OnComplete

といった各タイミングでのコールバックを設定できます。

OnComplete(() =>
{
    Debug.Log("Complete!");
});

イージング

アニメーションのイージング関数を用意された中から指定することができます。

AnimationCurveを指定することもできます。

SetEase(Ease.InBounce);

組み合わせ

他にもありますが、これらを組み合わせて以下の様に記述できます。

transform.DOMoveX(2f, 1f)
    .SetDelay(0.5f)
    .SetLoops(5, LoopType.Yoyo)
    .SetEase(Ease.InBounce)
    .OnComplete(() =>
    {
        Debug.Log("Complete!");
    });

Pro版

有料版のDOTween Proでは、以下の追加機能が提供されます:

  • DOTweenPath: ビジュアルパスエディタによる複雑な移動経路の作成
  • DOTweenAnimation: インスペクタ上での直感的なTween設定
  • 2D ToolkitTextMesh ProNGUIなどのサードパーティアセット対応
  • より豊富なショートカットメソッドを追加

まとめ

今回はスムーズなアニメーションを簡単なコードで実装できる、DOTweenを紹介しました。

DOTweenはゲーム開発の現場でも使用されています。

無料で導入できますし、ちょっとしたコードでオブジェクトに様々な動きを簡単につけられるのでユーザーにリッチな印象を与えられます。

今回は紹介していませんが、ゲーム内のHPゲージを減らす時やスコアをカウントアップするといったことにも活用できます。

組み合わせれば様々な演出を作ることもできます。

🔗関連ページ