using System.Collections; using System.Collections.Generic; using LitMotion; using UnityEngine; using UnityEngine.EventSystems; using RectTransform = UnityEngine.RectTransform; public class ButtonAnimation : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { // [Header("Components")] [SerializeField] RectTransform rectTransform; // [SerializeField] TMP_Text text; [Header("Settings")] [SerializeField] float duration = 0.07f; [SerializeField] Ease ease = Ease.OutQuad; [SerializeField] Vector3 animationSizeDelta = new(0.2f, 0.2f); // [SerializeField] float animationFontSizeDelta = 1f; Vector3 initialSize; float initialFontSize; CompositeMotionHandle motionHandles = new(); void Start() { rectTransform = GetComponent(); initialSize = rectTransform.localScale; // initialFontSize = text.fontSize; } void OnDestroy() { motionHandles.Cancel(); } public void OnPointerDown(PointerEventData eventData) { motionHandles.Cancel(); LMotion.Create(rectTransform.localScale, initialSize - animationSizeDelta, duration) .WithEase(ease).Bind(Bind) // .BindToSizeDelta(rectTransform) .AddTo(motionHandles); // LMotion.Create(text.fontSize, initialFontSize - animationFontSizeDelta, duration) // .WithEase(ease) // .BindToFontSize(text) // .AddTo(motionHandles); } private void Bind(Vector3 size) { rectTransform.localScale = size; } public void OnPointerUp(PointerEventData eventData) { motionHandles.Cancel(); LMotion.Create(rectTransform.localScale, initialSize, duration) .WithEase(ease) .Bind(Bind) .AddTo(motionHandles); } }