public override bool Resolve(ParamsObject requestParams, out Vector2 cellCenter) { Vector2 cellWorldPosition = requestParams.GetParam <Vector2>(); Vector3Int cellGridPosition = grid.WorldToCell(cellWorldPosition); float xCenter = Mathf.Floor(cellGridPosition.x) + grid.cellSize.x / 2; float yCenter = Mathf.Floor(cellGridPosition.y) + grid.cellSize.y / 2; cellCenter = new Vector2(xCenter, yCenter); return(true); }
public override bool Resolve(ParamsObject requestParams, out LayerMask resolveParams) { Vector2 cellWorldPosition = requestParams.GetParam <Vector2>(); Vector3Int cellGridPosition = grid.WorldToCell(cellWorldPosition); Tilemap tilemap = tilemaps.FirstOrDefault(t => t.HasTile(cellGridPosition)); if (tilemap != null) { resolveParams = tilemap.gameObject.layer; return(true); } else { resolveParams = default; return(false); } }
public override bool Resolve(ParamsObject requestParams, out List <Vector2> tilePositions) { tilePositions = new List <Vector2>(); TileBase neededTile = requestParams.GetParam <TileBase>(); foreach (Tilemap tilemap in tilemaps) { for (int x = tilemap.cellBounds.xMin; x < tilemap.cellBounds.xMax; x++) { for (int y = tilemap.cellBounds.yMin; y < tilemap.cellBounds.yMax; y++) { Vector3Int localPlace = (new Vector3Int(x, y, (int)tilemap.transform.position.z)); if (tilemap.GetTile(localPlace) == neededTile) { tilePositions.Add(tilemap.CellToWorld(localPlace)); } } } } return(tilePositions.Count > 0); }