| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using System.Collections.Generic;
- using UnityEngine;
- [RequireComponent(typeof(LineRenderer))]
- public class TrailLine : MonoBehaviour
- {
- public float pointSpacing = 0.1f; // 两个轨迹点之间的最小距离
- private LineRenderer lineRenderer;
- private List<Vector3> points = new List<Vector3>();
- private Vector3 lastPoint;
- void Start()
- {
- lineRenderer = GetComponent<LineRenderer>();
- lineRenderer.startWidth = 0.03f;
- lineRenderer.endWidth = 0.03f;
- lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
- lineRenderer.startColor = Color.red;
- lineRenderer.endColor = Color.red;
- // 初始化第一个点
- points.Add(transform.position);
- lastPoint = transform.position;
- }
- void Update()
- {
- float distance = Vector3.Distance(transform.position, lastPoint);
- // 如果移动距离超过设定的间隔,就记录一个点
- if (distance >= pointSpacing)
- {
- points.Add(transform.position);
- lastPoint = transform.position;
- // 更新 LineRenderer 的点
- lineRenderer.positionCount = points.Count;
- lineRenderer.SetPositions(points.ToArray());
- }
- }
- }
|