ButtonAnimation.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using LitMotion;
  4. using UnityEngine;
  5. using UnityEngine.EventSystems;
  6. using RectTransform = UnityEngine.RectTransform;
  7. public class ButtonAnimation : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
  8. {
  9. // [Header("Components")] [SerializeField]
  10. RectTransform rectTransform;
  11. // [SerializeField] TMP_Text text;
  12. [Header("Settings")] [SerializeField] float duration = 0.07f;
  13. [SerializeField] Ease ease = Ease.OutQuad;
  14. [SerializeField] Vector3 animationSizeDelta = new(0.2f, 0.2f);
  15. public bool isEnabled = true;
  16. // [SerializeField] float animationFontSizeDelta = 1f;
  17. Vector3 initialSize;
  18. float initialFontSize;
  19. CompositeMotionHandle motionHandles = new();
  20. void Start()
  21. {
  22. rectTransform = GetComponent<RectTransform>();
  23. initialSize = rectTransform.localScale;
  24. // initialFontSize = text.fontSize;
  25. }
  26. void OnDestroy()
  27. {
  28. motionHandles.Cancel();
  29. }
  30. public void OnPointerDown(PointerEventData eventData)
  31. {
  32. if(!isEnabled)
  33. return;
  34. motionHandles.Cancel();
  35. LMotion.Create(rectTransform.localScale, initialSize - animationSizeDelta, duration)
  36. .WithEase(ease).Bind(Bind)
  37. // .BindToSizeDelta(rectTransform)
  38. .AddTo(motionHandles);
  39. // LMotion.Create(text.fontSize, initialFontSize - animationFontSizeDelta, duration)
  40. // .WithEase(ease)
  41. // .BindToFontSize(text)
  42. // .AddTo(motionHandles);
  43. }
  44. private void Bind(Vector3 size)
  45. {
  46. rectTransform.localScale = size;
  47. }
  48. public void OnPointerUp(PointerEventData eventData)
  49. {
  50. if(!isEnabled)
  51. return;
  52. motionHandles.Cancel();
  53. LMotion.Create(rectTransform.localScale, initialSize, duration)
  54. .WithEase(ease)
  55. .Bind(Bind)
  56. .AddTo(motionHandles);
  57. }
  58. }