以下に、DOTweenを使用したソースコード例をおいておく。シーケンス準備からコールバック、移動、などまで一通りまとめた。これで大体は事足りるだろう。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
//トップページのロゴをびょーんとしたあとに無限にふわふわ動かす
public class TopRogoMove : MonoBehaviour
{
//RectTransform指定。Getconponentは遅いんで極力つかわんことにする
public RectTransform titleRogo;
//アニメーションシーン
private Sequence _myseq;
private Sequence _myseq2;
void Start()
{
//アニメーション、シーケンス準備
_myseq = DOTween.Sequence();
_myseq.AppendInterval(
1.0f //待ち
);
//びよーん
_myseq.Append(
titleRogo.DOPunchScale(
new Vector2(1.2f, 1.2f), //scale1.5倍指定
1.0f //アニメーション時間
)
);
//数秒まつ
_myseq.AppendInterval(
1.0f //待ち
).AppendCallback(() => { //コールバック設定、これをいれることで終わったあとに更に処理ができる
//アニメーション、シーケンス準備、2つ目
_myseq2 = DOTween.Sequence();
//ふわふわ(ループ)
_myseq2.Append(
titleRogo.DOLocalMove( //ローカル座標
new Vector2(0.0f, 150.0f), //移動XY
2.0f //アニメーション時間
)
.SetEase(Ease.InOutBack) //イージング指定
.SetRelative() //いまいる場所から移動
);
_myseq2.AppendInterval(
0.4f //待ち
);
_myseq2.Append(
titleRogo.DOLocalMove( //ローカル座標
new Vector2(0.0f, -150.0f), //移動XY
2.0f //アニメーション時間
)
.SetEase(Ease.InOutBack) //イージング指定
.SetRelative() //いまいる場所から移動
);
_myseq2.SetLoops(-1); //-1は無限ループ
//再生
_myseq2.Play();
});
//再生
_myseq.Play();
}
private void OnDisable()
{
//オブジェクトが破棄されるタイミングでTweenアニメーションもkillしておく
if (DOTween.instance != null)
{
_myseq.Kill();
_myseq2.Kill();
}
}
}
イージングの種類はこちらをよく参考にさせてもらっています。