Unity_Lesson

DOTweenはUnityで使われるアニメーションライブラリで、簡単に強力なアニメーションやエフェクトを作成できます。Tween(アニメーションの補間)の概念を基に、スムーズにオブジェクトの移動、スケーリング、回転、色変更などが行えます。DOTweenは、シンプルなコードで複雑なアニメーションを実現できるため、Unityでアニメーションを制御する上で非常に便利です。

ここでは、DOTweenの基本的な使い方から、TransformアニメーションやUIアニメーション、DOPathSequence、イベント、オプションなど、詳細に解説していきます。


1. DOTweenの基本的な使い方

まず、DOTweenを使用するためには、パッケージをインポートする必要があります。UnityのPackage ManagerまたはDOTweenの公式サイトからインポート可能です。

DOTweenのインストール:

  1. Unity Package Managerからインポート
    Package Managerで DOTween と検索してインポート。

  2. 初期化 最初に一度だけDOTween.Init()を呼び出して初期化します(スクリプトで自動的に初期化されることも多いです)。


2. Transformアニメーション

DOTweenを使えば、Transformのアニメーション(移動、回転、スケーリングなど)を簡単に作成できます。

サンプル1:移動アニメーション

using UnityEngine;
using DG.Tweening;

public class TransformAnimation : MonoBehaviour
{
    void Start()
    {
        // 3秒間でオブジェクトを(3, 2, 0)に移動させる
        transform.DOMove(new Vector3(3, 2, 0), 3f);
    }
}

サンプル2:回転アニメーション

void Start()
{
    // 2秒間でオブジェクトをY軸に90度回転させる
    transform.DORotate(new Vector3(0, 90, 0), 2f);
}

サンプル3:スケーリングアニメーション

void Start()
{
    // 1秒間でオブジェクトを2倍のサイズにスケーリング
    transform.DOScale(new Vector3(2, 2, 2), 1f);
}

3. UIアニメーション

DOTweenは、UnityEngine.UIクラスに対してもアニメーションを適用することができます。ボタンやイメージの色変更、フェードイン・フェードアウトなども簡単に行えます。

サンプル1:UIの色変更

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class UIColorAnimation : MonoBehaviour
{
    public Image image;

    void Start()
    {
        // 2秒間でImageコンポーネントの色を赤に変更
        image.DOColor(Color.red, 2f);
    }
}

サンプル2:UIのフェードイン・フェードアウト

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class UIFadeAnimation : MonoBehaviour
{
    public Image image;

    void Start()
    {
        // 1秒間でImageのアルファを0(透明)にフェードアウト
        image.DOFade(0, 1f);
    }
}

サンプル3:テキストのアニメーション

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class UITextAnimation : MonoBehaviour
{
    public Text text;

    void Start()
    {
        // 3秒間でテキストの色を青に変更
        text.DOColor(Color.blue, 3f);
    }
}

4. DOPath:パスに沿ったアニメーション

DOPathを使うと、オブジェクトを指定したパスに沿って移動させることができます。これにより、複雑な移動パターンを簡単に実装できます。

サンプル:パスに沿った移動

void Start()
{
    // パスを定義(4つのポイントを通る)
    Vector3[] path = { new Vector3(0, 0, 0), new Vector3(1, 2, 0), new Vector3(3, 2, 0), new Vector3(4, 0, 0) };

    // 5秒間でオブジェクトをパスに沿って移動させる
    transform.DOPath(path, 5f, PathType.CatmullRom);
}

5. Sequence:複数のアニメーションを順番に実行

Sequenceを使用すると、複数のアニメーションを連続して実行することができます。Appendを使って順番にアニメーションを追加していきます。

サンプル:シーケンスアニメーション

void Start()
{
    // Sequenceを作成
    Sequence sequence = DOTween.Sequence();

    // 2秒間でオブジェクトを移動 → 1秒間でスケールアップ → 3秒間で回転
    sequence.Append(transform.DOMove(new Vector3(2, 2, 0), 2f));
    sequence.Append(transform.DOScale(new Vector3(2, 2, 2), 1f));
    sequence.Append(transform.DORotate(new Vector3(0, 180, 0), 3f));
}

6. イベント(アニメーションの開始や完了時に実行されるアクション)

アニメーションの開始、完了、中断などのタイミングで、特定のイベントをトリガーすることができます。

サンプル1:アニメーション完了時にイベントを発生

void Start()
{
    transform.DOMove(new Vector3(3, 3, 0), 2f).OnComplete(() =>
    {
        Debug.Log("アニメーション完了");
    });
}

サンプル2:アニメーション開始時にイベントを発生

void Start()
{
    transform.DOScale(new Vector3(2, 2, 2), 1f).OnStart(() =>
    {
        Debug.Log("アニメーション開始");
    });
}

7. オプション

DOTweenには、アニメーションをさらに細かく制御するためのさまざまなオプションがあります。たとえば、ループ、イージング(緩急の設定)、リピートなどです。

サンプル1:ループアニメーション

void Start()
{
    // 無限ループでオブジェクトを上下に移動させる
    transform.DOMoveY(3f, 2f).SetLoops(-1, LoopType.Yoyo);
}

サンプル2:イージングを使ったアニメーション

void Start()
{
    // 緩急をつけた移動アニメーション(イージング:InOutQuad)
    transform.DOMove(new Vector3(3, 3, 0), 2f).SetEase(Ease.InOutQuad);
}

8. その他のDOTween機能


まとめ

DOTweenは、少ないコードで簡単に強力なアニメーションを作成できるツールです。TransformやUIのアニメーション、パスアニメーション、シーケンスなど、幅広い用途に対応しており、柔軟な制御が可能です。イベントやオプションを使うことで、より洗練されたアニメーションを作り上げることができます。