unity根据点画出一条折线图:1,匀速的从一点到达下一个点,2,不止一个点,3,点随时可能会增加
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CreateLine : MonoBehaviour
{
public float Speed = 1f;
public List<Vector3> Points;
LineRenderer lineRenderer;
void Start()
{
//初始化线
InitLine();
}
void Update()
{
DrawLinePlot();
}
void InitLine()
{
lineRenderer = gameObject.GetComponent<LineRenderer>();
lineRenderer.SetPosition(0, Vector3.zero);
lineRenderer.useWorldSpace = false;
lineRenderer.startWidth = 0.1f;
lineRenderer.endWidth = 0.1f;
lineRenderer.numCornerVertices = 4;
}
/// <summary>
/// 画线
/// </summary>
void DrawLinePlot()
{
if (Points.Count > 0)
{
// 当前点
Vector3 current = lineRenderer.GetPosition(lineRenderer.positionCount - 1);
Vector3 target;
target = Points[0];
//Debug.Log(target);
// 移动到目标点
Vector3 interpolated = Vector3.MoveTowards(current, target, Speed * Time.deltaTime);
// 设置点的位置
lineRenderer.SetPosition(lineRenderer.positionCount - 1, interpolated);
//到达目标点时添加一个新点
if (target == interpolated)
{
lineRenderer.positionCount++;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, target);
Points.RemoveAt(0);
}
}
}
}