個人的勉強メモ置き場

プログラミングど素人のメモ置き場

DOTweenあっさり目メモ

以前から存在は知っていたものの触っていなかったTween系アセットのDOTween

今回あっさり目に触ってみたのでまとめてみる

 

導入


アセットストアからDOTweenをインポート。今回はFREE版を使用

すると下のような小さなウィンドウが出てくるのでOpen DOTween Utility Panelを選択


f:id:zykb:20200806123954p:plain


派手な画面が出てくるので緑のSetup DOTweenボタンをポチる

f:id:zykb:20200806124402p:plain


Applyを選択

f:id:zykb:20200806124549p:plain

これでDOTweenを使えるようになった

軽く触ってみる

DOTweenを使うにはスクリプト内で名前空間

using DG.Tweening;

を宣言する

移動


基本的にDOTweenはTransformまたはRectTransformに対して設定する

今回はuGUIのテキストを移動させてみるのでRectTransformで設定

移動にはワールド座標で扱うDOMove( )とローカル座標で扱うDOLocalMove( )がある

using DG.Tweening;
public class DOTweenTest : MonoBehaviour
{
    RectTransform rect;

    void Start()
    {
        rect = GetComponent<RectTransform>();

        // DOMove(移動終了地点, アニメーション時間)
        rect.DOLocalMove(new Vector3(200, 200, 0), 1.0f);
    }
}

これはローカル座標で(200, 200, 0)の地点に1秒かけて移動しろというスクリプト

f:id:zykb:20200806140427g:plain
DOLocalMove

相対座標で移動させる場合にはSetRelative( )をつける

// (200, 200, 0)の地点に1秒かけて移動する
rect.DOLocalMove(new Vector3(200, 200, 0), 1.0f);

// 現在の座標から(200, 200, 0)だけ移動する
rect.DOLocalMove(new Vector3(200, 200, 0), 1.0f).SetRelative();
回転


回転にはDORotateを使う

// DORotate(終了時点のRotation, アニメーション時間)
rect.DORotate(new Vector3(0,180,0), 1.0f);
f:id:zykb:20200806145341g:plain
DORotate

DORotateには第3引数があり、デフォルトではRotateMode.Fastとなっている

// デフォルトではRotateMode.Fast
// 最短回転
rect.DORotate(new Vector3(0,450,0), 1.0f);

// 360を超えて最短回転
rect.DORotate(new Vector3(0,450,0), 1.0f, RotateMode.FastBeyond360);
f:id:zykb:20200807044259g:plain
RotateMode

デフォルトのFastでは360度を超えないため90度と変わらない動きとなる

拡大・縮小

拡大・縮小にはDOScaleを使う

// DOScale(終了時点のScale値, アニメーション時間)
rect.DOScale(new Vector3(2, 2, 0), 1.0f);
f:id:zykb:20200807045138g:plain
DOScale


色の変更にはDOColorを使う

Text text = GetComponent<Text>();

// DOColor(終了時点の色, アニメーション時間)
text.DOColor(Color.red, 1.0f);
f:id:zykb:20200807051357g:plain
DOColor

Easing

イージングはアニメーションに変化や緩急をつけて自然に見せること
イージング関数一覧 Easing function

使い方


関数に続いてSetEase( )で設定する。ちなみにデフォルトはEase.InOutQuad

rect.DOLocalMove(new Vector3(400,0,0), 3f).SetEase(Ease.InCubic);
f:id:zykb:20200807053514g:plain
InCubic

プリセットアニメーション

DOTweenにはあらかじめ用意されているアニメーションがある。便利

Jump

指定値まで跳ねていくアニメーション

// DOJump(移動終了地点, ジャンプ力, ジャンプ回数, アニメーション時間)
rect.DOLocalJump(new Vector3(400,0,0),50, 5, 2f);
f:id:zykb:20200807055123g:plain
DOJump
Punch

現在値と指定値の間をいったりきたりするアニメーション

// DOPunchScale(Scale値, アニメーション時間)
rect.DOPunchScale(new Vector3(2,2,0), 2f);
f:id:zykb:20200807055936g:plain
DOPunchScale

DOPunchScaleの他にDOPunchPositionとDOPunchRotationがある

Shake

属性ごとの不規則アニメーション。こちらもDOShakeScaleの他にDOShakePositionとDOShakeRotationがある

// DOShakeScale(アニメーション時間)
rect.DOShakeScale(2f);
f:id:zykb:20200807060505g:plain
DOShakeScale

カメラにつければ衝突を簡単に表現できるかも?

f:id:zykb:20200807061139g:plain
DOShakePosition


シーケンスなどの続きはまた今度