using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class RollingByTime : MonoBehaviour { public RectTransform m_RectTransform; public float m_ParentWidth; private bool m_Point; private Tweener m_Tweener; private float m_lerp; private float m_time; private float m_targetPosx; public void Play(float time) { m_RectTransform.localPosition = Vector3.zero; //if (m_RectTransform.sizeDelta.x <= m_ParentWidth) return; m_time = time; m_Point = true; m_lerp = 0; } public void Stop() { m_Point = false; m_RectTransform.localPosition = new Vector2(Mathf.Clamp(m_RectTransform.sizeDelta.x / 2 - m_ParentWidth / 2, 0, m_RectTransform.sizeDelta.x / 2), m_RectTransform.localPosition.y); } private void Update() { if (m_Point) { m_lerp += Time.deltaTime / m_time; float posX = Mathf.Clamp(m_RectTransform.sizeDelta.x / 2 - m_ParentWidth / 2, 0, m_RectTransform.sizeDelta.x / 2); m_RectTransform.localPosition = Vector2.Lerp(new Vector2(posX, m_RectTransform.localPosition.y), new Vector2(-posX, m_RectTransform.localPosition.y), m_lerp); if (m_lerp >= 1) { m_lerp= 0; Stop(); } } } }