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); }
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); }