RPG 게임의 경우 원활한 게임 진행을 위해 미니맵을 만드는 경우가 많습니다. 여기서는 해당 미니맵을 구성하는 방법을 소개 합니다.
Render Texture
- Unity의 렌더 텍스처는 런타임에 생성되고 업데이트되는 특별한 유형의 텍스처입니다.
- 기본적으로 카메라의 출력이나 렌더링 프로세스를 화면에 직접 렌더링하는 대신 텍스처로 렌더링하는 데 사용됩니다.
- 이를 통해 게임 개발 시 다양한 고급 그래픽 기술과 효과를 사용할 수 있습니다.
주요 개념
렌더링 대상
- 일반적으로 Unity의 카메라는 화면에 직접 렌더링됩니다.
- 그러나 대신 렌더 텍스처로 렌더링하도록 카메라를 설정할 수 있습니다.
- 즉, 카메라의 뷰가 텍스처로 렌더링됩니다.
동적 텍스처
- 렌더 텍스처는 동적이므로 게임이 진행됨에 따라 실시간으로 업데이트될 수 있습니다.
- 이를 통해 실시간 반사, 감시 카메라, 동적 물 효과 등이 가능해졌습니다.
포스트 프로세싱
- 포스트 프로세싱 효과에 자주 사용됩니다.
- 먼저 렌더 텍스처로 렌더링한 다음 이 텍스처를 화면에 표시하기 전에 셰이더로 처리하여 장면에 효과를 적용할 수 있습니다.
다중 카메라
- 복잡한 장면이나 PIP(Picture-in-Picture) 디스플레이와 같은 효과를 위해 다양한 렌더 텍스처로 렌더링하는 여러 대의 카메라를 가질 수 있습니다.
해상도 및 형식
- 렌더 텍스처는 다양한 해상도와 형식을 가질 수 있습니다.
- 게임의 필요에 따라 품질과 성능의 균형을 맞추면서 이를 지정할 수 있습니다.
게임에서의 사용 예
- 반사: 거울이나 반짝이는 바닥과 같은 반사 표면을 렌더링합니다.
- 미니맵: 게임 세계를 위에서 아래로 내려다보는 미니맵을 표시합니다.
- 감시 카메라: 보안 카메라 디스플레이처럼 게임 내에서 카메라 피드를 표시합니다.
- 포털: 마법의 포털처럼 세계의 다른 위치에서 뷰를 렌더링합니다.
- 화면 효과: 흐림, 회색조 또는 기타 화면 전체 후처리 효과와 같은 효과를 만듭니다
기술적 고려사항
- 성능: 렌더 텍스처를 사용하면 특히 더 높은 해상도나 여러 대의 카메라에서 성능이 필요할 수 있습니다. 사용량을 최적화하는 것이 중요합니다.
- 메모리 사용량: 상당한 양의 메모리를 소비할 수 있으므로 해상도와 수명을 효과적으로 관리하는 것이 중요합니다.
- 셰이더 호환성: 셰이더가 특히 복잡한 후처리 효과의 경우 렌더 텍스처 형식을 처리할 수 있는지 확인하세요.
미니맵 구현
Render Texture 생성
- Assets => Create => Render Texture
- Render Texture 를 생성하면 Project 안에
New Render Texture
오브젝트가 생성 됩니다.
- 2D 의 평면 위에 표시하려면
Dimension
을2D
로 맞춰줍니다. - 만약 Cube 형태 또는 3D 형태라고 하면 그에 맞추어 바꿔 줍니다.
미니맵 카메라 생성
- Hierarchy => Camera 로 Camera 오브젝트를 생성 합니다.
- 해당 카메라 오브젝트의 Inspector에서
Audio Listener
를 제거하여 Main Camera의 Listner 중복을 방지 합니다. - 해당 카메라의 위치를 잡아 줍니다.
- 여기서는 미니맵으로 활용할 예정이라 아래 방향을 바라보는 위치로 설정합니다.
- 이때 전체 맵을 보여줄지 아니면 일부만 보여줄지는 카메라 위치에 따라 달라집니다.
-
Minimap Camera
의 Camera Component 의Target Texture
를 아까 생성한Render Texture
로 설정합니다.
미니맵 UI 생성
- Hierarchy 에 미니맵으로 사용할 UI 를 생성합니다.
- UI의 위치 및 크기를 조정하여 위치를 잡아 줍니다.
- 그 후
Raw Image
컴포넌트를 추가 합니다. -
Raw Image
컴포넌의Texture
를Render Texture
를 할당 해줍니다.
- 이렇게 하면 해당 미니맵 UI에 표시된
Render Texture
를 확인 할 수 있습니다.
캐릭터 미니맵 표시
- 현재는 실제 오브젝트를 비추고 있어 잘 보이지 않는 문제가 있습니다.
-
별도의 마커를 만들어서 해당 오브젝트들이 잘 보일수 있도록 합니다.
- 해당 오브젝트의 머리 위로 마커를 생성해 줍니다.
- 문제는 Game View 에서도 마커가 표시되는 문제가 있습니다.
- 마커에
Minimap
이라는 Layer Mask를 생성해 줍니다.
-
Main Camera
를 선택하여 Inspector에Culling Mask
를 선택하여Minimap
레이어의체크를 해제
합니다.
- 이렇게 하면 Main Camera는 해당
Minimap
레이어를 표시하지 않습니다.
미니맵 Mask
- Raw Image 는 별도의 Sprite를 설정 할 수 없어 모양을 지정할 수 없습니다.
-
보여지는 그대로 랜더링 되기 때문에 원하는 모양의 미니맵을 생성하려면
Mask
설정을 해야 합니다. - Minimap Mask 라는 Image UI를 생성
- 원하는 모양의 Sprite를생성 합니다.
- 해당 오브젝트의 자녀 오브젝트로
Minimap
오브젝트를 넣어 줍니다.
- 그러면 Mask 컴포넌트가 있는 오브젝트의 모양대로 미니맵이 보이는 것을 확인 할 수 있습니다.
- 이렇게 하면 미니맵 구성이 끝나게 됩니다.
- 필요에 따라서
Minimap Camera
를 캐릭터 오브젝트의 자녀로 두어 캐릭터를 추적하는 미니맵을 생성 할 수 있습니다.