public DroneDecisionSimple(ref DroneController m_Drone, ref GameObject[] friends, ref HighResMap highRes, List <Tuple <int, int> > pathII) { mPathII = pathII; mHighResMap = highRes; mDrone = m_Drone; mFriends = friends; mCurrentTargetIndex = 0; foreach (var p in mPathII) { mPath.Add(new Vector3(mHighResMap.get_x_pos(p.Item1), 0f, mHighResMap.get_z_pos(p.Item2))); } printPath(); }
private void planPath() { List <int> my_path_reversed = new List <int>(); int e = n; int u; // Debug.Log(e); // 先输出最后一个点 my_path_reversed.Add(e); int counter = 0; // 现在开始输出路径(倒着输出) while (true) { //从所有的点中找到与上个点相连的点 for (u = 1; u <= n; u++) { // 如果这个点上个点相连,并且在最短路径上面 // 那么输出这个点,并且在从这个点寻找路径上的下一个点 if (dis[e] - dis[u] == cc[e, u] && cc[e, u] != INF) { e = u; //Debug.Log(" " + e); my_path_reversed.Add(e); break; } } counter++; if (counter > 100000) { break; } if (e == 1) { break; } } for (int k = my_path_reversed.Count - 2; k > 0; k--) { int i = node_dic[my_path_reversed[k]].Item1; int j = node_dic[my_path_reversed[k]].Item2; //Debug.Log(i + ", " + j); Vector3 waypoint = new Vector3(highResMap.get_x_pos(i), 3f, highResMap.get_z_pos(j)); my_path.Add(waypoint); } }