RollingByTime.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using DG.Tweening;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.EventSystems;
  6. public class RollingByTime : MonoBehaviour
  7. {
  8. public RectTransform m_RectTransform;
  9. public float m_ParentWidth;
  10. private bool m_Point;
  11. private Tweener m_Tweener;
  12. private float m_lerp;
  13. private float m_time;
  14. private float m_targetPosx;
  15. public void Play(float time)
  16. {
  17. m_RectTransform.localPosition = Vector3.zero;
  18. //if (m_RectTransform.sizeDelta.x <= m_ParentWidth) return;
  19. m_time = time;
  20. m_Point = true;
  21. m_lerp = 0;
  22. }
  23. public void Stop()
  24. {
  25. m_Point = false;
  26. 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);
  27. }
  28. private void Update()
  29. {
  30. if (m_Point)
  31. {
  32. m_lerp += Time.deltaTime / m_time;
  33. float posX = Mathf.Clamp(m_RectTransform.sizeDelta.x / 2 - m_ParentWidth / 2, 0, m_RectTransform.sizeDelta.x / 2);
  34. m_RectTransform.localPosition = Vector2.Lerp(new Vector2(posX, m_RectTransform.localPosition.y),
  35. new Vector2(-posX, m_RectTransform.localPosition.y), m_lerp);
  36. if (m_lerp >= 1)
  37. {
  38. m_lerp= 0;
  39. Stop();
  40. }
  41. }
  42. }
  43. }