private void CenterCameraOnBoard() { Transform cameraTransform = mainCamera.transform; Vector3 boardPosition = boardGameObject.position; cameraTransform.position = new Vector3(boardPosition.x, boardPosition.y, cameraTransform.position.z); mainCamera.transform.LookAt(boardGameObject, Vector3.forward); int boardSizeY = (int)_boardCreator.BoardSize.y; Tile.Tile t = _boardCreator.MiddleTile; Rect tileRect = t.GetComponent <RectTransform>().rect; Vector3 tilePos = t.transform.position; float newBoardPosX = tilePos.x; float newBoardPosY = tilePos.y + (boardSizeY % 2 == 0 ? tileRect.height / 2 : 0); boardGameObject.position = new Vector3(-newBoardPosX, -newBoardPosY, boardPosition.z); int fov = (int)fovForHeight.x; int boardHeight = (int)fovForHeight.y; int newFov = fov - (fov - boardSizeY * fov / boardHeight) / 2; mainCamera.fieldOfView = newFov + fovGap; _boardCreator.RemoveMiddleTile(); backgroundAdjuster.AdjustBackground(); }
private Vector2 GetTilePosition(Vector3 index, TileTypes type = TileTypes.Single) { index.ToInts(out int x, out int y, out int floor); Rect tileRect = tileGameObject.GetComponent <RectTransform>().rect; Vector3 boardPos = boardGameObject.position; float xPos; float yPos; switch (type) { case TileTypes.DoubleH: bool shouldShiftX = ShouldShiftTileX(index, out Tile bottomTile); xPos = boardPos.x + tileRect.width * x + tileRect.width / 2 - (shouldShiftX ? tileShift * (int)bottomTile.Index.z : 0); bool shouldShiftY = ShouldShiftTileY(index); yPos = boardPos.y - tileRect.height * y + tileShift * y - (shouldShiftY ? tileRect.height / 2 : 0); break; case TileTypes.DoubleV: xPos = boardPos.x + tileRect.width * x - tileShift * floor; yPos = boardPos.y - tileRect.height * y - tileRect.height / 2 + tileShift * y; break; default: xPos = boardPos.x + tileRect.width * x - tileShift * floor; yPos = boardPos.y - tileRect.height * y + tileShift * y; break; } return(new Vector2(xPos, yPos)); }