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);
}
その他の機能
DOTween
はTweener
オブジェクトを返すメソッドチェーン形式で設計されており、
そのため処理を連結して記述することができます。
遅延
開始するタイミングを遅らせることができます。
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 Toolkit
、TextMesh Pro
、NGUI
などのサードパーティアセット対応- より豊富なショートカットメソッドを追加
まとめ
今回はスムーズなアニメーションを簡単なコードで実装できる、DOTween
を紹介しました。
DOTween
はゲーム開発の現場でも使用されています。
無料で導入できますし、ちょっとしたコードでオブジェクトに様々な動きを簡単につけられるのでユーザーにリッチな印象を与えられます。
今回は紹介していませんが、ゲーム内のHPゲージを減らす時やスコアをカウントアップするといったことにも活用できます。
組み合わせれば様々な演出を作ることもできます。