そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【Unity】DOTweenまとめ

いつも忘れるのでDOTweenの自分用まとめ

DOTweenとは

unity-yuji.xyz
面倒な処理も1行でかける f:id:marumaro7:20210117161717p:plain

DOTweenでできるアニメーションのイメージ

game-ui.net

初期設定

DOTweenの使い方 Tweenアニメーション入門【Unity】|アマガミナブログ

公式ドキュメント

dotween.demigiant.com

DOTweenを使うにはusing設定必須

using DG.Tweening;

1つのアニメーションにオプションをつける

transform.DOLocalMove(new Vector3(10f, 0, 0), 1.0f)//ローカル座標移動 座標,移動にかける時間
           .SetDelay(1f)//SetDelay(待機時間/秒)
           .SetRelative()//SetRelative() 相対的に移動する 例:Tween前の座標が(5, 0, 0)の時に(15, 0, 0)へ動くようになる

           .SetLoops(2, LoopType.Incremental)//SetLoops(ループ回数, LoopType) ループ回数は-1で永久ループ
            //Incremental:前回の位置を基準にしながら差分移動
            //Restart:同じ動きを繰り返す
            //Yoyo:ヨーヨーのように、進んでは戻るを繰り返す

           .SetEase(Ease.OutQuad);//SetEase(Ease or AnimationCurve) アニメーションの進み具合を指定する。
            //DOTweenで用意されているEase型で指定するか、Unity標準のAnimationCurve型を渡します。
           //Ease型なら https://easings.net から選ぶ

順番にアニメーション

Sequence sequence = DOTween.Sequence()//Sequence型の変数 sequenceを宣言
.Append(transform.DOScale(1.1f, 1.0f)                   
.SetEase(Ease.OutQuart)
.SetLoops(4, LoopType.Restart))//オプション付きアニメーション
.Append(transform.DOScale(1.0f, 0.8f))//オプション無しアニメーション
.OnComplete(() => Debug.Log("全部終了"));//完了のコールバック

//Tweenの追加
//Append() 前のTweenが終わってから実行
//Join()   前のTweenと同時に実行
//Prepend()    再生済のものを除いて、先頭に追加


 //注意!オプションはAppend()などのカッコの中に書かないとsequence全体に適用されてしまう

//オプションおさらい
  //SetDelay(待機時間/秒)
  //SetRelative() 相対的に移動する 例:Tween前の座標が(5, 0, 0)の時に(15, 0, 0)へ動くようになる
   //SetLoops(ループ回数, LoopType) ループ回数は-1で永久ループ
   //Incremental:前回の位置を基準にしながら差分移動
   //Restart:同じ動きを繰り返す
   //Yoyo:ヨーヨーのように、進んでは戻るを繰り返す
   //SetEase(Ease or AnimationCurve) アニメーションの進み具合を指定する。
   //DOTweenで用意されているEase型で指定するか、Unity標準のAnimationCurve型を渡します。
   //Ease型なら https://easings.net から選ぶ
 //等速ならEase.Linear       

任意のタイミングでアニメーション

using UnityEngine;
using DG.Tweening;

public class ButtonAnime : MonoBehaviour
{
    private Tween t;
   
    void Start()
    {
        t = transform.DOScale(1.1f, 0.8f)
          .SetEase(Ease.OutQuart)//オプション
          .SetLoops(-1, LoopType.Restart);//-1で無限ループ

        t.Play();//再生
    }
    
 //ボタンにこの関数を割り当て
    public void AnimeStop()
    {        
        t.Kill();//アニメの破棄 無限ループはKillで破棄する
        transform.DOScale(1.0f, 0);//元のスケールに戻す
    }
}
//一時停止
t.Pause();

// 最初から再生
t.Restart();

//終了(無限ループの終了には使えない)
t.Complete();

魅力的なUIノウハウ

unity-yuji.xyz

おわりに

ゆーじさん天才