コード例 #1
0
    private List <Astar> GetNeighborTiles(Astar cur)
    {
        List <Astar> neighbors = new List <Astar>();

        Astar origin = new Astar();

        origin.parent = cur;
        origin.g      = cur.g;

        Astar temp1 = origin.Clone();
        Astar temp2 = origin.Clone();
        Astar temp3 = origin.Clone();
        Astar temp4 = origin.Clone();

        Astar temp5 = origin.Clone();
        Astar temp6 = origin.Clone();
        Astar temp7 = origin.Clone();
        Astar temp8 = origin.Clone();

        Astar temp9  = origin.Clone();
        Astar temp10 = origin.Clone();
        Astar temp11 = origin.Clone();
        Astar temp12 = origin.Clone();

        temp1.pos = cur.pos + Vector3Int.right;
        neighbors.Add(temp1);
        temp2.pos = cur.pos + Vector3Int.left;
        neighbors.Add(temp2);
        temp3.pos = cur.pos + Vector3Int.up;
        neighbors.Add(temp3);
        temp4.pos = cur.pos + Vector3Int.down;
        neighbors.Add(temp4);

        Vector3Int temp = new Vector3Int(0, 0, 1);

        temp5.pos = cur.pos + Vector3Int.right + temp;
        neighbors.Add(temp5);
        temp6.pos = cur.pos + Vector3Int.left + temp;
        neighbors.Add(temp6);
        temp7.pos = cur.pos + Vector3Int.up + temp;
        neighbors.Add(temp7);
        temp8.pos = cur.pos + Vector3Int.down + temp;
        neighbors.Add(temp8);

        temp9.pos = cur.pos + Vector3Int.right - temp;
        neighbors.Add(temp9);
        temp10.pos = cur.pos + Vector3Int.left - temp;
        neighbors.Add(temp10);
        temp11.pos = cur.pos + Vector3Int.up - temp;
        neighbors.Add(temp11);
        temp12.pos = cur.pos + Vector3Int.down - temp;
        neighbors.Add(temp12);

        int          rand;
        List <Astar> ret = new List <Astar>();

        while (neighbors.Count > 0)
        {
            rand = Random.Range(0, neighbors.Count);
            ret.Add(neighbors[rand]);
            neighbors.RemoveAt(rand);
        }
        return(ret);
        //return neighbors;
    }