using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using DG.Tweening; [RequireComponent(typeof(EventTrigger ))] public class CustomButton : MonoBehaviour { EventTrigger eventTrigger; public float scaleAmount = 1.1f; public float shakeAmount = 0.1f; public int shakeVibrato = 10; public float shakeRandomness = 90; public bool shakeFadeOut = true; public Ease easeMode = Ease.OutBack; public float scaleDuration = 0.1f; public float shakeDuration = 0.1f; void Start() { eventTrigger = GetComponent(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerEnter; entry.callback.AddListener((data) => { OnPointerEnter((PointerEventData)data); }); eventTrigger.triggers.Add(entry); entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerExit; entry.callback.AddListener((data) => { OnPointerExit((PointerEventData)data); }); eventTrigger.triggers.Add(entry); } void OnPointerEnter(PointerEventData eventData) { transform.DOScale(scaleAmount, scaleDuration).SetEase(easeMode).SetUpdate(true); transform.DOShakePosition(shakeDuration, shakeAmount, shakeVibrato, shakeRandomness, shakeFadeOut, true).SetEase(easeMode).SetUpdate(true); } void OnPointerExit(PointerEventData eventData) { transform.DOScale(1f, scaleDuration).SetEase(easeMode).SetUpdate(true); transform.DOShakePosition(shakeDuration, shakeAmount, shakeVibrato, shakeRandomness, shakeFadeOut, true).SetEase(easeMode).SetUpdate(true); } }