예제 #1
0
파일: AStarDemo.cs 프로젝트: dudu502/AiFa
    /// <summary>
    /// Start is called on the frame when a script is enabled just before
    /// any of the Update methods is called the first time.
    /// </summary>
    void Start()
    {
        AStarPoint[,] array = new AStarPoint[(int)128, (int)64];


        for (int i = 0; i < array.GetLength(0); ++i)
        {
            for (int j = 0; j < array.GetLength(1); ++j)
            {
                var obj = GameObject.Instantiate(m_Rect);
                obj.SetActive(true);
                obj.transform.SetParent(transform);
                obj.transform.localScale = Vector3.one;
                obj.GetComponent <RectTransform>().anchoredPosition = new Vector2(i * 10, j * 10);
                var img = obj.GetComponent <Image>();
                array[i, j]          = new AStarPoint(i, j);
                array[i, j].Value    = m_Txt.GetPixel(i, j) == Color.white?0:1;
                array[i, j].Position = obj.GetComponent <RectTransform>().anchoredPosition;
                img.color            = array[i, j].Value == 0?Color.white:Color.black;
            }
        }


        AStarMap map = new AStarMap(new AStarMapData(array));
        float    t   = Time.time;

        //var rst = map.GetPath(new AStarNode(1,1),new AStarNode(6,10),false);

        AStar.GetInstance().FindPathAsyn(map, new AStarNode(10, 10), new AStarNode(115, 32), true, (e) =>
        {
            print("1cost time " + (Time.time - t));
            StartCoroutine(showPath(e, map));
        });

        AStar.GetInstance().FindPathAsyn(map.Clone(), new AStarNode(11, 9), new AStarNode(115, 8), true, (e) =>
        {
            print("2cost time " + (Time.time - t));
            StartCoroutine(showPath(e, map));
        });

        AStar.GetInstance().FindPathAsyn(map.Clone(), new AStarNode(17, 23), new AStarNode(66, 8), true, (e) =>
        {
            print("3cost time " + (Time.time - t));
            StartCoroutine(showPath(e, map));
        });


        AStar.GetInstance().FindPathAsyn(map.Clone(), new AStarNode(66, 7), new AStarNode(15, 22), true, (e) =>
        {
            print("4cost time " + (Time.time - t));
            StartCoroutine(showPath(e, map));
        });

        AStar.GetInstance().FindPathAsyn(map.Clone(), new AStarNode(115, 31), new AStarNode(11, 11), true, (e) =>
        {
            print("5cost time " + (Time.time - t));
            StartCoroutine(showPath(e, map));
        });
    }
예제 #2
0
파일: AStarDemo1.cs 프로젝트: dudu502/AiFa
    /// <summary>
    /// Start is called on the frame when a script is enabled just before
    /// any of the Update methods is called the first time.
    /// </summary>
    void Start()
    {
        // AStarPoint[,] array = new AStarPoint[128,64];
        AStarPoint[,] array = new AStarPoint[128, 64];

        for (int i = 0; i < array.GetLength(0); ++i)
        {
            for (int j = 0; j < array.GetLength(1); ++j)
            {
                var obj = GameObject.Instantiate(m_Rect);
                obj.SetActive(true);
                obj.transform.SetParent(transform);
                obj.transform.localScale    = Vector3.one;
                obj.transform.localPosition = new Vector2(i * 0.2f, j * 0.2f);
                var img = obj.GetComponent <SpriteRenderer>();
                array[i, j]          = new AStarPoint(i, j);
                array[i, j].Value    = m_Txt.GetPixel(i, j) == Color.white?0:1;
                array[i, j].Position = obj.transform.localPosition;
                img.color            = array[i, j].Value == 0?Color.white:Color.black;
                obj.GetComponent <CirclePointSprite>().OnMouseUpHandler = OnMouseClickHandler;
            }
        }


        map = new AStarMap(new AStarMapData(array));



        // AStar.GetInstance().FindPathAsyn(map,new AStarNode(10,10),new AStarNode(115,32),true,(e)=>
        // {
        //     print("1cost time "+(Time.time-t));
        //     StartCoroutine(showPath(e,map));
        // });

        // AStar.GetInstance().FindPathAsyn(map.Clone(),new AStarNode(11,9),new AStarNode(115,8),true,(e)=>
        // {
        //     print("2cost time "+(Time.time-t));
        //     StartCoroutine(showPath(e,map));
        // });

        // AStar.GetInstance().FindPathAsyn(map.Clone(),new AStarNode(17,23),new AStarNode(66,8),true,(e)=>
        // {
        //     print("3cost time "+(Time.time-t));
        //     StartCoroutine(showPath(e,map));
        // });


        // AStar.GetInstance().FindPathAsyn(map.Clone(),new AStarNode(66,7),new AStarNode(15,22),true,(e)=>
        // {
        //     print("4cost time "+(Time.time-t));
        //     StartCoroutine(showPath(e,map));
        // });

        // AStar.GetInstance().FindPathAsyn(map.Clone(),new AStarNode(115,31),new AStarNode(11,11),true,(e)=>
        // {
        //     print("5cost time "+(Time.time-t));
        //     StartCoroutine(showPath(e,map));
        // });
    }