using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using DG.Tweening; public class Rolling : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { public RectTransform m_RectTransform; public float m_ParentWidth; public float m_Speed; private bool m_Point; private Tweener m_Tweener; public void OnPointerEnter(PointerEventData eventData) { if (m_RectTransform.sizeDelta.x <= m_ParentWidth) return; m_Point = true; } public void OnPointerExit(PointerEventData eventData) { if (m_RectTransform.sizeDelta.x <= m_ParentWidth) return; m_Point = false; m_RectTransform.localPosition = new Vector2(0, m_RectTransform.localPosition.y); } private void Update() { if (m_Point) { m_RectTransform.localPosition = Vector2.MoveTowards(m_RectTransform.localPosition, new Vector2(-(m_RectTransform.sizeDelta.x - m_ParentWidth), m_RectTransform.localPosition.y), m_Speed * Time.deltaTime); if (Mathf.Abs(Mathf.Abs(m_RectTransform.localPosition.x) - (m_RectTransform.sizeDelta.x - m_ParentWidth)) < 0.1f) { m_RectTransform.localPosition = new Vector2(0, m_RectTransform.localPosition.y); } } } public void Init() { m_Point = false; m_RectTransform.localPosition = new Vector2(0, m_RectTransform.localPosition.y); } }