45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
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>();
|
|
|
|
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);
|
|
}
|
|
}
|