1 /// <summary>
2 /// 路径点排序
3 /// </summary>
4 /// <param name="start">路径起点</param>
5 /// <param name="input">路径上所有的点</param>
6 /// <param name="output">空的列表,保存排序后的路径</param>
7 public static void SortToPath(Vector3 start, List<Vector3> input, List<Vector3> output)
8 {
9 var currentNearestDistance = float.PositiveInfinity;
10 var nearestIdx = -1;
11 for (int i = 0; i < input.Count; i++)
12 {
13 var dis = Vector3.Distance(start, input[i]);
14 if (dis < currentNearestDistance)
15 {
16 currentNearestDistance = dis;
17 nearestIdx = i;
18 }
19 }
20 if (nearestIdx >= 0)
21 {
22 output.Add(input[nearestIdx]);
23 input.RemoveAt(nearestIdx);
24 SortToPath(output[output.Count - 1], input, output);
25 }
26 }