TrailLine.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. [RequireComponent(typeof(LineRenderer))]
  4. public class TrailLine : MonoBehaviour
  5. {
  6. public float pointSpacing = 0.1f; // 两个轨迹点之间的最小距离
  7. private LineRenderer lineRenderer;
  8. private List<Vector3> points = new List<Vector3>();
  9. private Vector3 lastPoint;
  10. void Start()
  11. {
  12. lineRenderer = GetComponent<LineRenderer>();
  13. lineRenderer.startWidth = 0.03f;
  14. lineRenderer.endWidth = 0.03f;
  15. lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
  16. lineRenderer.startColor = Color.red;
  17. lineRenderer.endColor = Color.red;
  18. // 初始化第一个点
  19. points.Add(transform.position);
  20. lastPoint = transform.position;
  21. }
  22. void Update()
  23. {
  24. float distance = Vector3.Distance(transform.position, lastPoint);
  25. // 如果移动距离超过设定的间隔,就记录一个点
  26. if (distance >= pointSpacing)
  27. {
  28. points.Add(transform.position);
  29. lastPoint = transform.position;
  30. // 更新 LineRenderer 的点
  31. lineRenderer.positionCount = points.Count;
  32. lineRenderer.SetPositions(points.ToArray());
  33. }
  34. }
  35. }