'Trying center a tower on tilemap

Iam making a placement system using tilemaps, its almost done but have a small problem.

Placement System

As you can see the tower never be on middle of tiles, i want it always be on middle, even if the size is 2x2 (on that video is 3x3), i dont know what is wrong with my code, so i need help.


void Update()
    {
            Vector3 mousePosWorldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Vector3Int cellPos = sniperTower.World.MapGrid.LocalToCell(mousePosWorldPoint);
            Vector3 posConverted = sniperTower.World.MapGrid.CellToLocalInterpolated(cellPos);
            BoundsInt bounds = new BoundsInt();

            bounds.position = cellPos;
            bounds.size = sniperTower.BuldingSize;

            if (sniperTower.PreviousBounds.position != null && sniperTower.PreviousBounds.position != bounds.position) {
                sniperTower.World.clearTiles(sniperTower.PreviousBounds);
                sniperTower.Moving(bounds,new Vector3(posConverted.x, posConverted.y, 10));
                sniperTower.World.fillTiles("Placing",bounds);
            }else if(sniperTower.PreviousBounds.position == null) {
                sniperTower.Moving(bounds,new Vector3(posConverted.x, posConverted.y, 10));
                sniperTower.World.fillTiles("Placing",bounds);
            }
    }

//The Moving Method

public virtual void Moving(BoundsInt bounds,Vector3 position){
        this.movingBounds = bounds;
        this.previousBounds = this.movingBounds;
        this.buildingObject.transform.position = position;
 }

//The FillTiles and ClearTiles Methods

public void fillTiles(string tileType, BoundsInt area){
   for (int x = area.x; x < (area.x + area.size.x); x++) {
      for (int y = area.y; y < (area.y + area.size.y); y++) {
          placingTilemap.SetTile(new Vector3Int(x,y,0),tiles[tileType]);
      }
   }  
}

public void clearTiles(BoundsInt area){
   for (int x = area.x; x < (area.x + area.size.x); x++) {
      for (int y = area.y; y < (area.y + area.size.y); y++) {
          placingTilemap.SetTile(new Vector3Int(x,y,0),null);
      }
   }
}



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source