Unreal - 미니맵 만들기

2025. 4. 25. 18:39·Unreal5 프로젝트 다이어리

언리얼에서는 미니맵을 표현하는방식은

카메라를 사용하는방식과 사용하지 않는 방식 크게 두가지가 있습니다

 

카메라를 직접적으로 사용하는방식은 사실적이고 구체적이게 묘사되는 장점이 있지만

리소스를 많이 잡아먹는다 라는 단점도 있습니다

 

여러가지 미니맵 커스터마이징도 가능하기떄문에 저는

USceneCaptureComponent2D 컴포넌트를 사용해서 만드는방식을 사용해보겠습니다

 

캐릭터에서 사용할 컴포넌트를 먼저 선언해줍니다

 

minimapCameraBoom 미니맵카메라를 위에 띄우기 위한 카메라 붐 입니다
minimapCapture 미니맵 화면을 실제로 찍는 카메라 역할을 하는 대상입니다
minimapSprite 미니맵에서 보여줄 아이콘 입니다 (적이나 자신을표현할때사용합니다)

 

작업에 들어가기 앞서 BUILD.CS 파일을 열고

반드시 Paper2D를 추가한뒤 빌드를 해줍니다

(빌드이후 프로젝트를 generate 한번 해주셔야 빨간 밑줄이 보이지않습니다)

미니맵으로 사용할 캔버스 렌더 타깃을 만들어줍니다

텍스처 -> 캔버스 렌더 타깃

 

캐릭터로 돌아갑니다

필요한 헤더를 선언해줍니다

#include "Components/SceneCaptureComponent2D.h"
#include "Engine/CanvasRenderTarget2D.h"
#include "PaperSpriteComponent.h"

 

//minimap
minimapCameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("MinimapSpringArmComp"));
minimapCameraBoom->SetupAttachment(RootComponent);
minimapCameraBoom->SetWorldRotation(FRotator(-90.0f, 45.0f, 0.0f));

minimapCameraBoom->TargetArmLength = 900.0f;
minimapCameraBoom->bUsePawnControlRotation = false;
minimapCameraBoom->bInheritPitch = false;
minimapCameraBoom->bInheritRoll = false;
minimapCameraBoom->bInheritYaw = false;

minimapCapture = CreateDefaultSubobject<USceneCaptureComponent2D>(TEXT("CaptureMinimap"));
minimapCapture->SetupAttachment(minimapCameraBoom);
minimapCapture->ProjectionType = ECameraProjectionMode::Orthographic;
minimapCapture->OrthoWidth = 1700.0f;
minimapCapture->ShowOnlyComponents.Add(minimapSprite);



static ConstructorHelpers::FObjectFinder<UCanvasRenderTarget2D> renderObj(TEXT("/Game/Luco/MiniMap/CRT_Minimap.CRT_Minimap"));
if (renderObj.Succeeded())
{
	minimapCapture->TextureTarget = renderObj.Object;
}
minimapSprite = CreateDefaultSubobject<UPaperSpriteComponent>(TEXT("MinimapSprite"));
minimapSprite->SetupAttachment(GetMesh());

 

캐릭터의 생성자에서 해당 컴포넌트를 만들고 위치를 지정해줍니다

minimapCameraBoom->bUsePawnControlRotation = false;
minimapCameraBoom->bInheritPitch = false;
minimapCameraBoom->bInheritRoll = false;
minimapCameraBoom->bInheritYaw = false;

해당코드는 미니맵이 같이 회전해버리는 현상을 방지해줍니다

 

캐릭터로부터 카메라붐이 생겼고 카메라 붐위에 카메라가 달렸습니다

적과 플레이어를 나타내는 마커 이미지를 준비합니다

미니맵 액터의 생성자에서 이렇게 작성해줍니다

 

해당 마커 텍스쳐 우클릭 -> 스프라이트 생성 해줍니다

캔버스 렌더 타깃을 메테리얼 생성해줍니다

만든메테리얼노드를 해당 그림과 같게 연결해줍니다

도메인을 User Interface로 변경해줍니다

 

minimapCapture에 아까만든 텍스쳐 타깃을 넣어줍니다

사용할 위젯에 이미지를 추가하고 브러시 이미지에 방금만든 메테리얼을 넣어줍니다

카메라가 잘 비치는모습을 확인할수있습니다

먼가 이상한게있습니다

플레이어는 밑으로 가는데 카메라는 살짝 대각선으로 이동합니다

제가 만든 탑뷰 시점의 카메라는 살짝 비틀어져있어서 그렇습니다

미니맵 카메라도 방향에 맞게 회전시켜주었습니다

시점에 따라 다르게 해주면될거같습니다

 

 

페이퍼 스프라이트 컴포넌트에 플레이어를 표시할 스프라이트를 추가해주고 플레이어 위로 방향에 맞게 설정해줍니다

 

 

그럼 이제 플레이어 화면에서는 미니맵을 제외하고 스프라이트화살표가 안보이게 해보겠습니다

스프라이트 화살표를 미니맵 카메라 근처에 세팅해줍니다

SceneCapture Component 2d의 detail창에서 일반 표시를 검색하게되면

미니맵에서 그릴 내용을 설정을 할수있습니다

라이팅을 검색하게되면 그리고싶은 라이트 또한 설정을 할수있습니다

다이나믹새도 와

표시하고싶지않은것들을 체크 헤제해주겠습니다

스프라이트 화살표를 오너에게 보이지 않음을 체크해줍니다

반드시 PaperSprite는 Collision설정을 따로 해주시길바랍니다

 

이제 적을 스프라이트 화살표로 표시하게 해보겠습니다

 

적에게 스프라이트 화살표를 달아줍니다

씬 캡처에서만 표시를 해줍니다

사용하고있는 메시도 씬캡처에서 숨김 표시를 체크해줍니다

미니맵의 로직이 완성되었습니다

더이상 미니맵에서는 특정새도우, 플레이어, 적을 직접적으로 나타내는것이 아닌 

스프라이트 화살표로만 나타냅니다

 

그럼 이제 미니맵의 모양을 바꿔보겠습니다

오파시티값을 사용하기위에 블렌드모드를 Masked로 변경합니다

Constant노드를 사용해 GeneratedRoundRect노드값을 변경후 오파시티마스크에 연결해줍니다

그럼 둥근 모양으로 변경됩니다

 

최종결과물

 

 

 

'Unreal5 프로젝트 다이어리' 카테고리의 다른 글

Unreal - BehaviorTree(1) AI Perception  (0) 2025.04.27
Unreal - 8방향 블렌드스페이스(BlendSpace)  (0) 2025.04.27
Unreal - 마우스 커서 바꾸기  (0) 2025.04.25
Unreal - 스택형 스킬 구현하기  (0) 2025.04.24
Unreal - 원형 프로그래스바(ProgressBar) 만들기  (0) 2025.04.24
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
  • Unreal - BehaviorTree(1) AI Perception
  • Unreal - 8방향 블렌드스페이스(BlendSpace)
  • Unreal - 마우스 커서 바꾸기
  • Unreal - 스택형 스킬 구현하기
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (130) N
      • Unreal5 프로젝트 다이어리 (73)
      • Unreal5 프로젝트 다이어리2 (9) N
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • C++ 프로그래머스 다이어리 (24)
        • Stack (3)
        • Hash (4)
        • Heap (2)
        • Sort (4)
        • Exhaustive search (0)
      • 코드 개인보관함 (8)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 태그

    언리얼 모션매칭
    언리얼 behavior tree
    unreal loading
    언리얼 behaviortree
    언리얼
    언리얼 시퀀스
    언리얼 컷씬
    unreal 모션매칭
    unreal sequence
    언리얼 로딩창
    언리얼 페이드 아웃
    unreal look at
    unreal 로딩
    언리얼 look at
    언리얼 로딩
    unreal 시퀀스
    언리얼 foot step
    언리얼 motionmatching
    언리얼 비헤이비어트리
    unreal 컷씬
  • hELLO· Designed By정상우.v4.10.3
lucodev
Unreal - 미니맵 만들기
상단으로

티스토리툴바