📚
UnityのDOTweenとSequence
ChatGPTがいい感じに吐いてくれたのでメモ
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class MoveAndScaleImage : MonoBehaviour
{
public RectTransform imageTransform;
public Vector2 startPosition = new Vector2(-474f, 145f);
public Vector2 targetPosition = new Vector2(525f, 66f);
public float moveDuration = 2f;
public float scaleDuration = 1f;
public float scaleAmount = 2f;
public float fadeDuration = 1f;
public float fogDuration = 1f;
public float backDuration = 1f;
public Ease moveEase = Ease.Linear;
public Ease scaleEase = Ease.OutElastic;
public Ease fadeEase = Ease.Linear;
public Ease fogEase = Ease.Linear;
public Ease backEase = Ease.Linear;
public Image fadeImage;
public RectTransform fogTransform;
void Start()
{
// Sequence を作成します。
Sequence sequence = DOTween.Sequence();
// 画像の初期位置を設定します。
imageTransform.anchoredPosition = startPosition;
// 移動アニメーションを追加します。
sequence.Append(imageTransform.DOAnchorPos(targetPosition, moveDuration).SetEase(moveEase));
// 拡大アニメーションを追加します。
sequence.Append(imageTransform.DOScale(scaleAmount, scaleDuration).SetEase(scaleEase));
// 黒いモヤをフェードインするアニメーションを追加します。
sequence.Append(fadeImage.DOFade(1f, fadeDuration).SetEase(fadeEase));
// 黒いモヤを拡大するアニメーションを追加します。
sequence.Join(fogTransform.DOScale(1f, fogDuration).SetEase(fogEase));
// 初期位置に戻るアニメーションを追加します。
sequence.Append(imageTransform.DOAnchorPos(startPosition, backDuration).SetEase(backEase));
// 黒いモヤをフェードアウトするアニメーションを追加します。
sequence.Join(fadeImage.DOFade(0f, fadeDuration).SetEase(fadeEase));
// 黒いモヤを縮小するアニメーションを追加します。
sequence.Join(fogTransform.DOScale(0f, fogDuration).SetEase(fogEase));
// 画像を縮小するアニメーションを追加します。
sequence.Join(imageTransform.DOScale(0f, scaleDuration).SetEase(scaleEase));
// ゲームオブジェクトを非表示にするアニメーションを追加します。
sequence.OnComplete(() =>
{
gameObject.SetActive(false);
});
}
}
Discussion