넓은 맵을 움직이면서 미니맵으로 내가 어디에 있는지, 근처 모습이 어떤지를 통해 보여줘야 한다.
그럼 어떻게 만들지 생각을 해보자.
1. 플레이어 위에서 플레이어를 따라다니며 넓게 내려다 보는 카메라가 있어야겠군
2. 그 카메라의 뷰를 보여주는 공간이 필요하겠군
3. 공간의 크기를 적절하게 조절하여 캔버스에다가 위치하면 카메라 뷰에 계속 고정 되겠군
이정도로 하고 생각한대로 한번 해보도록 하자.
새롭게 카메라를 추가하고 캐릭터의 움직임과 회전을 따라 해야하니까 캐릭터의 자식으로 넣는다.
적당히 높이를 조절하여 x회전값을 변경하고 게임뷰를 봐보면
이렇게 된다.
그럼 이제 이 오른쪽 뷰를 특정 공간에서 볼 수 있게 해보자.
카메라 뷰를 보여주게 해주는 렌더 텍스쳐를 생성한다.
렌더 텍스쳐는 카메라가 비추는 화면을 마치 텍스쳐 인것 처럼 원하는 곳에 렌더링해준다.
그럼 이 텍스쳐를 우리가 원하는 오브젝트에 입혀주면 그 오브젝트가 카메라뷰를 렌더링 해주는 식이다.
그럼 이 텍스쳐에 미니맵 카메라를 연결해줘야 한다.
카메라의 inspector 창에서 Target Texture 에다가 아까 만들어준 렌더 텍스쳐를 연결해준다.
그다음엔 플레이어 하위에 UI - Raw Image 를 생성해준다.
이제 이 Raw Image에 아까 카메라와 연결한 렌더 첵스쳐를 넣어주고
해당 이미지의 포지션을 오른쪽 상단에 배치해보면
이렇게 잘 나온다!!
더 나아가서 미니맵을 동그랗게 만들고 그 주위에 Border를 넣어보자!
유니티에서 텍스쳐를 넣기 전 이미지는 모두 사각형이다.
원을 만들려면 마스크를 사용해야한다.
마스크 기능은 Blender에서 Bool과도 같은 기능인듯 한데
겹치는 텍스쳐를 제외하거나 겹치는 부분만 원하는대로 떼어서 렌더가 가능하다.
그럼 원 텍스쳐를 불러와서 마스크로 사용하면 될것이다!
원형 png를 import하고 캔버스 내의 RawImage에 Image를 생성해준다.
그리고 미니맵 위치로 옮겨준다음 x,y 스케일을 1.1배씩 키워준다
그러면 테두리가 잡힌다.
이 테두리의 모양을 동그라미로 만들어야한다.
그리고 아까 import한 원형 이미지를 Sprite 타입으로 변경해준다. 그래야 마스크로 쓸 수 있다.
그리고 Image안의 Image컴포넌트의 Source Image를 아까 Sprite으로 변경해준 원형 파일을 넣어준다.
러면 위처럼 바뀐다.
그릭나서 위의 작업을 마친 Image를 그대로 복사해서 오브젝트를 또 만들어준다.
위의 Image는 사이즈를 쪼오금 더 키워서 Border로 사용할 것이고
아래 Image(1)은 미니맵 랜더링의 마스크로 사용할 것이다.
아래 Image(1)에다가 Mask 컴포넌트를 만들어주고 미니맵 카메라를 보여주고 있는 RawImage를 Image(1) 하위 오브젝트로 넣어준다.
그러면 이렇게 된다!
그런데 아직 완벽한 원형이 아니다. 그냥 동그라미 바깥 부분은 잘리고 안 부분은 유지가 되어있다.
이때는 RawImage의 크기를 조절해주면 된다.
너비와 높이를 각각 100에서 적당히 110으로 모두 바꿔줬더니 꽉차게 되었다.
그러면 이제 뒤에 숨겨져 있는 Image를 똑같이 110으로 키워주면 경계선이 생긴다.
이미지의 해상도 문제인지는 모르겠는데
경계선 안쪽 면이 지글지글해 보인다.
이건 추후에 높은 해상도의 원형 이미지를 사용하면 될 것같다!
미니맵을 완성했는데
이건 어디까지나 로컬플레이어 기준이다.
이게 현재 캔버스 상에서 띄워져 있기 때문에
네트워크에서 어떻게 뜨는지도 살펴 봐야한다.
물론 미니맵 카메라와 렌더링 캔버스를 플레이어 하위에 배치하긴 했지만
움직임과 회전 값도 똑같이 받을려는지는 확인해보고 수정해봐야겠다.
'UNITY > 학교 메타버스' 카테고리의 다른 글
[Unity] 학교 메타버스 게임 - 3 : 플레이어 닉네임 띄우기 (0) | 2021.06.05 |
---|---|
[Unity] 학교 메타버스 게임 만들기 - 1 : 빛 설정 (0) | 2021.05.31 |