RPG 게임의 경우 원활한 게임 진행을 위해 미니맵을 만드는 경우가 많습니다. 여기서는 해당 미니맵을 구성하는 방법을 소개 합니다.

Render Texture

  • Unity의 렌더 텍스처는 런타임에 생성되고 업데이트되는 특별한 유형의 텍스처입니다.
  • 기본적으로 카메라의 출력이나 렌더링 프로세스를 화면에 직접 렌더링하는 대신 텍스처로 렌더링하는 데 사용됩니다.
  • 이를 통해 게임 개발 시 다양한 고급 그래픽 기술과 효과를 사용할 수 있습니다.

주요 개념

렌더링 대상

  • 일반적으로 Unity의 카메라는 화면에 직접 렌더링됩니다.
  • 그러나 대신 렌더 텍스처로 렌더링하도록 카메라를 설정할 수 있습니다.
  • 즉, 카메라의 뷰가 텍스처로 렌더링됩니다.

동적 텍스처

  • 렌더 텍스처는 동적이므로 게임이 진행됨에 따라 실시간으로 업데이트될 수 있습니다.
  • 이를 통해 실시간 반사, 감시 카메라, 동적 물 효과 등이 가능해졌습니다.

포스트 프로세싱

  • 포스트 프로세싱 효과에 자주 사용됩니다.
  • 먼저 렌더 텍스처로 렌더링한 다음 이 텍스처를 화면에 표시하기 전에 셰이더로 처리하여 장면에 효과를 적용할 수 있습니다.

다중 카메라

  • 복잡한 장면이나 PIP(Picture-in-Picture) 디스플레이와 같은 효과를 위해 다양한 렌더 텍스처로 렌더링하는 여러 대의 카메라를 가질 수 있습니다.

해상도 및 형식

  • 렌더 텍스처는 다양한 해상도와 형식을 가질 수 있습니다.
  • 게임의 필요에 따라 품질과 성능의 균형을 맞추면서 이를 지정할 수 있습니다.

게임에서의 사용 예

  1. 반사: 거울이나 반짝이는 바닥과 같은 반사 표면을 렌더링합니다.
  2. 미니맵: 게임 세계를 위에서 아래로 내려다보는 미니맵을 표시합니다.
  3. 감시 카메라: 보안 카메라 디스플레이처럼 게임 내에서 카메라 피드를 표시합니다.
  4. 포털: 마법의 포털처럼 세계의 다른 위치에서 뷰를 렌더링합니다.
  5. 화면 효과: 흐림, 회색조 또는 기타 화면 전체 후처리 효과와 같은 효과를 만듭니다

기술적 고려사항

  • 성능: 렌더 텍스처를 사용하면 특히 더 높은 해상도나 여러 대의 카메라에서 성능이 필요할 수 있습니다. 사용량을 최적화하는 것이 중요합니다.
  • 메모리 사용량: 상당한 양의 메모리를 소비할 수 있으므로 해상도와 수명을 효과적으로 관리하는 것이 중요합니다.
  • 셰이더 호환성: 셰이더가 특히 복잡한 후처리 효과의 경우 렌더 텍스처 형식을 처리할 수 있는지 확인하세요.

미니맵 구현

Render Texture 생성

  • Assets => Create => Render Texture
  • Render Texture 를 생성하면 Project 안에 New Render Texture 오브젝트가 생성 됩니다.

  • 2D 의 평면 위에 표시하려면 Dimension2D 로 맞춰줍니다.
  • 만약 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 컴포넌의 TextureRender 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를 캐릭터 오브젝트의 자녀로 두어 캐릭터를 추적하는 미니맵을 생성 할 수 있습니다.

결과