ImageMove.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class ImageMove : MonoBehaviour
  6. {
  7. public Image targetImage; // 要移动的 UI Image
  8. public float speed = 100f; // 移动速度(像素/秒)
  9. public float leftLimit = -200f; // 左边界相对初始位置
  10. public float rightLimit = 200f; // 右边界相对初始位置
  11. private RectTransform rectTransform;
  12. private Vector3 initialPosition;
  13. private int direction = 1; // 1表示向右,-1表示向左
  14. void Start()
  15. {
  16. if (targetImage == null)
  17. {
  18. Debug.LogError("请在 Inspector 中绑定 Image!");
  19. return;
  20. }
  21. rectTransform = targetImage.GetComponent<RectTransform>();
  22. initialPosition = rectTransform.anchoredPosition;
  23. }
  24. void Update()
  25. {
  26. if (targetImage == null) return;
  27. // 移动
  28. rectTransform.anchoredPosition += new Vector2(direction * speed * Time.deltaTime, 0);
  29. // 检查边界,反转方向
  30. if (rectTransform.anchoredPosition.x > initialPosition.x + rightLimit)
  31. {
  32. rectTransform.anchoredPosition = new Vector2(initialPosition.x + rightLimit, rectTransform.anchoredPosition.y);
  33. direction = -1; // 向左
  34. }
  35. else if (rectTransform.anchoredPosition.x < initialPosition.x + leftLimit)
  36. {
  37. rectTransform.anchoredPosition = new Vector2(initialPosition.x + leftLimit, rectTransform.anchoredPosition.y);
  38. direction = 1; // 向右
  39. }
  40. }
  41. }