유니티 미니맵, 두 번째 카메라 없이 UI로 쉽게 만들고 최적화!
유니티 미니맵 만들기: 두 번째 카메라 없이!
미니맵 만들고 싶은데, 두 번째 카메라 때문에 머리 아팠지?
사실 미니맵 만들려면 두 번째 카메라가 필요하다고 생각하기 쉬워. 근데 그거 아니어도 멋진 미니맵 만들 수 있어! 마치 샌드위치 만들 때 빵 두 개 다 안 먹고 속만 알차게 채우는 것처럼 말이야.
스타일리쉬한 미니맵, 어떻게 만들까?
중세 판타지 게임이나 엘더스크롤처럼 멋진 미니맵, 어떻게 만드는지 궁금했지? 나도 그 비법을 알아냈어! 이제 유니티에서 미니맵을 만드는 새로운 방법을 알려줄게.
준비물: 참고 이미지
가장 먼저 필요한 건 '참고 이미지'야.
- 장면 보기(Scene View)에서 등축 투영 모드(Isometric Mode)로 바꾸고, 지형을 위에서 바라봐.
- 그 상태에서 스크린샷을 찍어!
- 이 스크린샷을 포토샵 같은 이미지 편집 프로그램으로 가져가.
이 이미지를 그대로 써도 되지만, 더 멋진 스타일로 만들고 싶다면 여기서부터 시작하면 돼.
미니맵의 기본: UI 이미지
미니맵은 결국 'UI 이미지'야. 이 이미지를 부모 UI에 맞춰서 움직일 거야. 부모 UI는 투명한 원이라고 생각하면 돼.
- 미니맵 확대/축소: UI 이미지 크기를 조절하면 돼.
- UI 마스크 적용: 부모 UI에 마스크를 씌우면 기본적인 미니맵 틀이 완성돼!
세상 좌표를 미니맵 좌표로 바꾸는 마법
이제 가장 중요한 부분이야. 게임 세상의 좌표를 미니맵의 좌표로 어떻게 바꿀까?
-
세상 좌표 이해하기:
- 우리가 만든 미니맵 참고 이미지를 게임 세상이라고 생각해봐.
- 예를 들어, 게임 세상이 가로 250, 세로 250이고, 왼쪽 아래가 시작점(원점)이라고 하자.
- 중요! 유니티 지형을 쓰든 뭘 쓰든 상관없어. 중요한 건 네 게임 세상의 크기를 아는 거야.
-
미니맵 좌표 이해하기:
- 미니맵 이미지는 보통 가로 600, 세로 600이고, 가운데가 시작점(원점)이야.
-
좌표 변환: 행렬의 힘!
- 세상 좌표를 미니맵 좌표로 바꾸려면 '행렬'이라는 걸 사용해야 해. 마치 게임에서 화면에 물체를 그릴 때 쓰는 행렬처럼 말이지.
- 이 행렬을 만들려면 세 가지를 알아야 해: 이동(Translation), 회전(Rotation), 확대/축소(Scale)
-
이동 (Translation):
- 플레이어가 세상에서 위쪽, 오른쪽으로 움직인다고 상상해봐.
- 미니맵에서도 플레이어가 똑같이 움직이려면, 먼저 세상 좌표의 원점과 미니맵 좌표의 원점을 맞춰줘야 해.
- 이 값은 미니맵의 가로, 세로 크기의 절반만큼 이동시키면 돼.
-
확대/축소 (Scale):
- 세상에서 1만큼 움직이는 거랑 미니맵에서 1만큼 움직이는 건 다르잖아? 미니맵은 훨씬 작으니까.
- 그래서 확대/축소 값을 계산해야 해.
- 이 값은 미니맵 크기 / 세상 크기 로 계산하면 돼.
이제 제대로 된 확대/축소와 이동이 적용됐으니, 플레이어 위치가 미니맵에 정확하게 표시될 거야!
프로젝트 설정: 스크롤 뷰 활용
실제 프로젝트에 미니맵을 적용하려면 '스크롤 뷰'를 사용하면 좋아.
- 플레이어 중앙 유지: 플레이어가 미니맵 중앙에 계속 보이게 하려면, 미니맵의 앵커(기준점)와 위치를 플레이어와 반대로 설정해야 해.
- 확대/축소 시 플레이어 위치 보정: 미니맵을 확대/축소할 때 플레이어 위치도 똑같이 확대/축소 값으로 곱해줘야 해.
미니맵에 표시될 오브젝트들
게임 세상에 있는 오브젝트들을 미니맵에 표시하려면:
- '미니맵 월드 오브젝트' 스크립트 추가: 미니맵에 표시하고 싶은 모든 오브젝트에 이 스크립트를 붙여줘.
- 시작할 때 등록: 게임 시작할 때 '미니맵 컨트롤러'에 자신을 등록하고, 미니맵에 아이콘을 만들어.
업데이트 함수: 아이콘 움직이기
각 아이콘이 제대로 움직이게 하려면 '업데이트 함수'에서 다음을 해줘야 해.
- 월드 좌표를 맵 좌표로 변환: 아까 배운 행렬을 이용해서 세상 좌표를 미니맵 좌표로 바꿔줘.
- 아이콘 회전: 세상 오브젝트의 Y축 회전 값을 가져와서, 미니맵 아이콘은 Z축으로 회전시켜줘. (이때 회전 값을 반대로 해줘야 해. 세상의 위쪽 방향과 미니맵의 위쪽 방향이 반대거든.)
- 아이콘 크기 유지: 확대/축소해도 아이콘 크기가 일정하게 유지되도록, 미니맵 확대/축소 값의 역수를 곱해줘.
끝! 두 번째 카메라 없이 멋진 미니맵 완성!
이제 두 번째 카메라 없이도 멋진 미니맵을 만들 수 있게 됐어! 이 영상이 도움이 되었다면 좋겠네!