コード例 #1
0
 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();
 }
コード例 #2
0
    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);
        }
    }