using System; using System.Collections; using UnityEngine; using UnityEngine.UI; /// /// 버튼 클릭 시 눌리는 애니메이션(스케일 펀치)을 재생합니다. /// public static class ButtonAnimator { /// 버튼을 눌렀다 돌아오는 스케일 펀치 후 콜백 실행 public static void Play(Button button, Action onComplete = null, float punchScale = 0.85f, float duration = 0.12f) { if (button == null) { onComplete?.Invoke(); return; } button.StartCoroutine(PunchRoutine(button.transform, punchScale, duration, onComplete)); } private static IEnumerator PunchRoutine(Transform t, float punchScale, float halfDuration, Action onComplete) { Vector3 original = t.localScale; Vector3 small = original * punchScale; // 축소 float elapsed = 0f; while (elapsed < halfDuration) { elapsed += Time.unscaledDeltaTime; t.localScale = Vector3.Lerp(original, small, elapsed / halfDuration); yield return null; } t.localScale = small; // 복원 elapsed = 0f; while (elapsed < halfDuration) { elapsed += Time.unscaledDeltaTime; t.localScale = Vector3.Lerp(small, original, elapsed / halfDuration); yield return null; } t.localScale = original; onComplete?.Invoke(); } }