UnityのDotweenよく使うものまとめ

ドキュメント

dotween.demigiant.com

namespace

using DG.Tweening;

移動

(RectTransform)(gameObject.transform).DOLocalMove(new Vector3(8, 0, 0), 0.5f); //8,0,0の位置に移動

DOMoveはワールド座標での移動。DOLocalMoveはローカル座標。

絶対座標ではなく相対座標で移動したい。

(a,b,c)に移動したい、という場合ではなく、今いる位置から(d,e,f)移動したいという場合は、.SetRelativeをつけてあげれば良い。

(RectTransform)(gameObject.transform).DOLocalMove(new Vector3(8, 0, 0), 0.5f).SetRelative(); //今いる場所から右へ8移動

シーケンス

Sequence seq = DOTween.Sequence();
seq.Play();

ループ数を指定する

Sequence seq = DOTween.Sequence();
seq.SetLoops(-1); //-1なら無限ループ
seq.Play();

Append

Sequence seq = DOTween.Sequence();
seq.Append(((RectTransform)scrollArrowDown.transform).DOLocalMoveY(10, 0.5f).SetRelative());
seq.Append(((RectTransform)scrollArrowDown.transform).DOLocalMoveY(-10, 0.5f).SetRelative())
seq.Play();

AppendInterval

シーケンス中にxx秒待つ

Sequence seq = DOTween.Sequence();
sequence.AppendInterval(0.3f);
seq.Play();

AppendCallback

CallBackを設定

Sequence seq = DOTween.Sequence();
sequence.AppendCallback (()=>{
    if(onFinish != null){
        onFinish();
    }
});
seq.Play();

Fade

Image.DOFade

CrossFadeAlpha は unityの仕組みでdotweenじゃないけどおなじようなことできる

DoKill

今行っているアニメを消す。 component は uGUIの親のComponent。

component.DOKill()

onComplete

↓の例だと、スケールで小さくしてからゲームオブジェクトをDestroyするみたいな感じ

transform.DOScale(0, this.effectTime).onComplete = () =>
{
    Destroy(gameObject);
};

xx秒後にする

SetDelay を使うことで、xx秒後にtweenの処理をさせることができる。 ↓の例は、0.5秒後に0.6秒かけてサイズを200x200にする。シーケンス作るまでもない動きならこっちの方がいい。

rectTransform.DOSizeDelta(new Vector2(200, 200), 0.6f, true).SetDelay(0.5f)

To 〇〇の値をxxにする

以下は、CanvasGroupのalpha の値を0.5f秒かけて、0にする例

CanvasGroup canvasGroup = effect.gameObject.AddComponent<CanvasGroup>();
DOTween.To(() => canvasGroup.alpha, (n) => canvasGroup.alpha = n, 0, 0.5f).onComplete = () =>
{
    Destroy(effect.gameObject);
};

xxの方向に向きを変える DOLookAt

Vector3 targetPos = targetObj.transform.position; //
transform.DOLookAt(targetPos, 0.25f);

f:id:snoopopo:20210803153142g:plain
▲白と黒のキャラが、赤いキャラの方向を向きます