前提
- Dotweenが導入済みであること
これは何
- GetInstanceIDがDotweenと相性がいいという気づきの紹介
- 下の例でいうと対象のRectTransformを指定して振動開始・任意のタイミングで停止というメソッド
VibrateRect.cs
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
public static void VibrateRect(bool isActive, RectTransform rect) {
var id = rect.GetInstanceID();
if (isActive) {
if (DOTween.IsTweening(id)) {
return;
}
var sq = DOTween.Sequence().SetId(id);
sq.AppendInterval(2f);
sq.Append(
rect.DOPunchScale(
new Vector3(0.2f, 0.2f, 0.2f),
0.2f,
1,
1
).SetEase(Ease.OutExpo).SetLoops(4)
);
sq.SetLoops(100);
} else {
if (DOTween.IsTweening(id)) {
DOTween.Complete(id);
}
}
}
- アニメーション時間の引数増やすのも賢い気がする