미니맵 배경 이동 처리
플레이어 이동
→ 플레이어 월드 좌표 가져오기
→ Material Parameter의 X, Y 값 갱신
→ 미니맵 배경 위치 변경
미니맵 이미지에는 Dynamic Material Instance를 적용했다.
코드에서 미니맵 위젯이 생성될 때 머티리얼 인스턴스를 만들고, 매 Tick마다 플레이어 위치를 머티리얼 파라미터로 전달하도록 했다.
MiniMapMID->SetScalarParameterValue(TEXT("X"), Location.X);
MiniMapMID->SetScalarParameterValue(TEXT("Y"), Location.Y);
플레이어가 이동할 때 미니맵 배경도 실시간으로 갱신
플레이어 방향 화살표 구현
미니맵 중앙에는 플레이어 방향을 나타내는 화살표 이미지를 배치했다.
플레이어의 회전값 중 Yaw 값을 가져와서 화살표의 회전값에 적용했다.
ImagePlayerArrow->SetRenderTransformAngle(Rotation.Yaw);
플레이어가 바라보는 방향에 따라 미니맵의 화살표도 함께 회전한다.
지도 UI 구현
지도에는 플레이어 위치 아이콘을 표시하고, 플레이어의 월드 좌표를 지도 이미지 크기에 맞게 변환해서 아이콘 위치를 갱신했다.
플레이어 월드 좌표
→ LevelDimension 기준으로 정규화
→ MainMap Canvas 크기에 맞게 변환
→ PlayerIcon 위치 갱신
const float Scale = CanvasDimension / LevelDimension;
ImagePlayerIcon->SetRenderTranslation(
FVector2D(Location.X * Scale, Location.Y * Scale)
);
또한 미니맵과 마찬가지로 플레이어의 Yaw 값을 사용해 큰 지도 위의 플레이어 아이콘도 회전하도록 했다.
CommonUI 방식으로 지도 위젯 열기
현재 프로젝트는 CommonUI 기반이므로, AddToViewport()를 사용하지 않았다.
UKOUISubsystem::OpenWidget(this, MapSystemWidgetTag);
UI.Widget.Map.MainMap
→ UI.Layer.GameMenu
→ WBP_MainMap
큰 지도는 입력을 받는 메뉴 성격이므로 GameMenuLayer에 배치했다.
정리
- 게임 시작 시 미니맵 표시
- 플레이어 이동에 따른 미니맵 배경 갱신
- 플레이어 방향에 따른 미니맵 화살표 회전
- M 키로 큰 지도 열기
- 큰 지도 위 플레이어 위치 표시
- ESC로 큰 지도 닫기
- CommonUI 기반 UI Layer 구조 적용
'Unreal 최종 팀프로젝트' 카테고리의 다른 글
| [TIL] 무기 장착 슬롯 | 최종 팀프로젝트 (0) | 2026.06.10 |
|---|---|
| [TIL] 레시피 슬롯 생성 | 최종 팀프로젝트 (0) | 2026.06.09 |
| [TIL] 파이프 시스템 설계 | 최종 팀프로젝트 (0) | 2026.06.04 |
| [TIL] 건설 회전 기능 | 최종 팀프로젝트 (0) | 2026.06.02 |
| [TIL] UI 입력 흐름 | 최종 팀프로젝트 (0) | 2026.06.01 |