본문 바로가기
공부

랜덤 맵 생성] 트러블슈팅! screen 화면과 tilemap grid 화면이 맞지않음

by 때려쳐아니때려치지마 2025. 2. 20.

16:9 화면에서 tilemap의 그리드(뒤에 연한색 선)와 카메라 화면(흰색 진한선)이 정확히 맞아 떨어지지않음

비율 차이가 있음

16:10 화면에서는 fit하게 맞음

이거때문에 화면 비율을 고정할수없으니까 우회하거나 코드로 해결할 방법을 찾아야함

  1. ground 및 wall 등을 안쪽으로 한칸 더 들어가게 배치하고 끝부분을 그라데이션 등으로 유연하게 이어지는 이미지 배치 → 화면비가 변동적일 경우
  2. grid를 카메라 화면 기준으로 재계산하여 갱신 → 화면비가 고정일 경우

결론 : 기준 화면비를 16:9로 맞춰서 작업하고 화면비가 바뀔경우 1번 방법으로 레터박스를 background로 대치하는 방법을 사용하자


[그리드 사이즈 맞추기]

  1. 카메라 화면에 대응되는 grid의 position을 구한다.
  2. 카메라 화면에 맞는 gird의 사이즈를 구한다
  3. grid position 및 size 갱신
  4. grid를 화면비와 같은 비율로 나눠 1칸의 사이즈를 원하는 정사각형으로 만든다
    public void AdjustGridSizeToFitScreen(Vector2 position, Vector2 gridSize, Vector2 gridCellRatio)
    {
        _map.layoutGrid.transform.position = position;
        _map.layoutGrid.cellSize = new Vector3(gridSize.x / gridCellRatio.x, gridSize.y / gridCellRatio.y, 1);
    }

사이즈를 조정해서 grid를 fit하게 맞추었더니 tile의 sprite 사이즈가 맞지않는다

→ pixel per unit의 사이즈를 재계산하여 맞춘다

sprite 세팅을 바꾸는작업이라 runtime중에는 작업량이 크기때문에

초기에 editor를 통한 선작업으로 해주는걸 추천한다.

PPU(PixelPerUnit) = 16(원래 ppu사이즈) / 1.282999(grid의 cell 사이즈);

TODO 

[tile을 안쪽으로 배치하기 - 레터박스 개념]

  1. grid의 화면비는 16:9로 유지하여 세팅합니다
  2. screen의 화면비만큼 차이나는 부분을 background tile로 메꾸어줍니다

위 개념 공부해보고싶ㄷ

댓글