ButtonAnimation.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. // [SerializeField] float animationFontSizeDelta = 1f;
  16. Vector3 initialSize;
  17. float initialFontSize;
  18. CompositeMotionHandle motionHandles = new();
  19. void Start()
  20. {
  21. rectTransform = GetComponent<RectTransform>();
  22. initialSize = rectTransform.localScale;
  23. // initialFontSize = text.fontSize;
  24. }
  25. void OnDestroy()
  26. {
  27. motionHandles.Cancel();
  28. }
  29. public void OnPointerDown(PointerEventData eventData)
  30. {
  31. motionHandles.Cancel();
  32. LMotion.Create(rectTransform.localScale, initialSize - animationSizeDelta, duration)
  33. .WithEase(ease).Bind(Bind)
  34. // .BindToSizeDelta(rectTransform)
  35. .AddTo(motionHandles);
  36. // LMotion.Create(text.fontSize, initialFontSize - animationFontSizeDelta, duration)
  37. // .WithEase(ease)
  38. // .BindToFontSize(text)
  39. // .AddTo(motionHandles);
  40. }
  41. private void Bind(Vector3 size)
  42. {
  43. rectTransform.localScale = size;
  44. }
  45. public void OnPointerUp(PointerEventData eventData)
  46. {
  47. motionHandles.Cancel();
  48. LMotion.Create(rectTransform.localScale, initialSize, duration)
  49. .WithEase(ease)
  50. .Bind(Bind)
  51. .AddTo(motionHandles);
  52. }
  53. }