参考视频:Unity如何实现物体沿指定路线移动_哔哩哔哩_bilibili
Unity 功能合集之物体沿自定义路径移动_哔哩哔哩_bilibili
一,根据定点生成贝塞尔曲线
1.创建空对象Path,添加自定义脚本
path.cs脚本内容如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class path : MonoBehaviour
{
private List<Vector3> totalPath = new List<Vector3>();
public List<LineRenderer> lineRenderers = new List<LineRenderer>();
private void Awake()
{
GetComponentsInChildren(lineRenderers);
}
public List<Vector3> GetPathPoint()
{
totalPath.Clear();
for (int i = 0; i < lineRenderers.Count; i++)
{
Vector3[] path = new Vector3[lineRenderers[i].positionCount];
lineRenderers[i].GetPositions(path);
totalPath.AddRange(path);
}
return totalPath;
}
}
2,Path的子对象下创建空对象path(小写),添加LineRenderer和自定义脚本Line
Line.cs脚本如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
public class Line : MonoBehaviour
{
public LineRenderer lineRenderer;
public Transform pointA;
public Transform pointB;
public Transform pointC;
public Transform pointD;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
List<Vector3> path = BezierUtility.BeizerIntepolate4List(pointA.position, pointB.position, pointC.position, pointD.position, 40);
lineRenderer.positionCount = path.Count;
lineRenderer.SetPositions(path.ToArray());
}
}
其中Bez