Example #1
0
 public Vector2[] GetPath(RoyT.AStar.Grid grid, Vector2Int posStart, Vector2Int posEnd)
 {
     if (posEnd.x + startX >= 0 && posEnd.x + startX <= startX + endX && posEnd.y + startY >= 0 && posEnd.y + startY <= startY + endY)
     {
         var positions = grid.GetPath(new Position(posStart.x + startX, posStart.y + startY), new Position(posEnd.x + startX, posEnd.y + startY), MovementPatterns.LateralOnly);
         if (positions.Length > 1)
         {
             Vector2[] vectorPositions = new Vector2[positions.Length - 1];
             for (int i = 1; i < positions.Length; i++)
             {
                 vectorPositions[i - 1] = ConvertPosition(positions[i]);
             }
             return(vectorPositions);
         }
     }
     return(null);
 }
Example #2
0
    public GridTiles InitGrid(Tilemap TileMap)
    {
        GridTiles tiles = new GridTiles();

        tiles.walkableTiles = new List <Vector2Int>();
        RoyT.AStar.Grid grid = new RoyT.AStar.Grid(startX + endX, startY + endY, 1.0f);

        for (int i = -startX; i < endX; i++)
        {
            for (int j = -startY; j < endY; j++)
            {
                if (GameManager.instance.isWall(TileMap, new Vector2Int(i, j)))
                {
                    grid.BlockCell(new Position(i + startX, j + startY));
                }
                else if (!GameManager.instance.isGhostArea(new Vector2Int(i, j)))
                {
                    tiles.walkableTiles.Add(new Vector2Int(i, j));
                }
            }
        }
        tiles.grid = grid;
        return(tiles);
    }