미니맵 카메라 추적 & 회전 동기화 설계
1. 시스템 요구 사항
미니맵은 단순히 현재 위치를 표시하는 UI가 아니라, 플레이어가 지금 어디에 있고, 어느 방향을 보고 있는지를 즉각적으로 인지하게 만드는 보조 시야 시스템이다.
특히 3D 환경에서는 월드가 넓어질수록 플레이어가 자신의 방향 감각을 잃기 쉽기 때문에, 미니맵은 위치 정보 뿐만 아니라 방향 정보까지 함께 전달해야 의미를 가진다.
이때 가장 중요한 요구사항은 플레이어의 실제 이동 방향과 미니맵의 시점이 어긋나지 않는 것이었다.
플레이어는 앞으로 이동하고 있다고 느끼는데, 미니맵에서는 다른 방향으로 움직이는 것처럼 보인다면 미니맵은 오히려 혼란을 주는 요소가 된다.
또한 미니맵은 일반 카메라와 달리 항상 일정한 높이에서 내려다보는 시점을 유지해야 하므로, 플레이어의 위치를 그대로 추적하되 Y축 정보는 고정되어야 했다.
이를 통해 미니맵은 작은 또 하나의 월드 카메라가 아니라, 위치와 방향을 요약해 보여주는 투영된 시야로 동작해야 했다.
정리하면, 미니맵 시스템의 첫 단계에서는 플레이어의 위치 변화와 회전 변화가 지연 없이, 왜곡 없이, 직관적으로 반영되는 구조를 만드는 것이 핵심 요구사항이었다.
2. 설계 목표
- 플레이어의 XZ 위치를 기준으로 미니맵 카메라가 실시간 추적하도록 구성할 것
- 미니맵 카메라는 항상 고정된 높이(Y)를 유지하도록 할 것
- 플레이어의 회전 방향과 미니맵 시점을 정확히 일치시킬 것
- 불필요한 보정이나 복잡한 수학 계산 없이 최소 연산으로 구현할 것
3. 흐름도

이 흐름에서 중요한 점은, 미니맵 카메라가 플레이어를 따라가면서도 플레이어를 기준으로 회전하지는 않는다는 점이다.
회전의 기준은 항상 플레이어의 현재 바라보는 방향이며, 미니맵은 그 결과를 그대로 반영하는 구조로 설계했다.
4. 구현
4.1. 플레이어 추적 및 회전 동기화
void Update()
{
if (target != null)
{
transform.position = new Vector3(
target.position.x,
transform.position.y,
target.position.z
);
Vector3 forward = target.forward;
forward.y = 0;
Quaternion targetRotation = Quaternion.LookRotation(forward);
transform.rotation = Quaternion.Euler(
transform.rotation.eulerAngles.x,
targetRotation.eulerAngles.y,
transform.rotation.eulerAngles.z
);
}
}
미니맵 카메라는 Update()에서 매 프레임 플레이어의 위치와 회전을 반영하도록 구성했다.
미니맵은 플레이어의 움직임에 즉각 반응해야 하기 때문에, 프레임 단위로 갱신되는 구조가 가장 자연스럽다고 판단했다.
위치 추적에서는 플레이어의 월드 좌표 중 X와 Z만 사용하고, Y 값은 미니맵 카메라가 가진 기존 높이를 그대로 유지한다.
이 방식은 미니맵이 항상 일정한 고도에서 내려다보는 시점을 유지하게 만들며, 플레이어가 점프하거나 지형 높이가 변해도 미니맵 시점이 흔들리지 않도록 해준다.
회전 처리에서는 플레이어의 forward 벡터를 그대로 사용하지 않고, 먼저 Y 성분을 제거했다.
이는 미니맵이 상하 기울기 정보를 필요로 하지 않기 때문이다.
미니맵에서 중요한 것은 어느 방향을 보고 있는가이지, 얼마나 위를 보고 있는가가 아니므로 수평 방향만 추출해 사용했다.
Quaternion.LookRotation을 사용해 수평 방향을 바라보는 회전을 생성한 뒤, 미니맵 카메라의 회전 중 Y축 회전만 갱신했다.
X축과 Z축 회전은 유지함으로써, 미니맵 카메라가 항상 위에서 내려다보는 고정 시점을 유지하게 된다.
이 구조의 핵심은, 플레이어가 회전해서 카메라가 따라오는 구조가 아니라, 플레이어의 현재 방향을 기준으로 미니맵 시점을 맞추는 구조라는 점이다.
그 결과 플레이어가 방향을 전환하는 순간, 미니맵 역시 같은 기준으로 회전하며 '플레이어가 바라보는 방향 = 미니맵 상의 위쪽'이라는 직관적인 규칙이 항상 유지된다.
5. 개발 의도
이 게시글에서 보여주고자 한 것은, 미니맵을 단순히 작은 지도로 구현하는 것이 아니라 방향 감각을 보조하는 시야 시스템으로 설계했다는 점이다.
복잡한 좌표 보정이나 수학적 계산을 사용하지 않고도, 플레이어의 위치와 방향 정보를 최소 연산으로 정확히 반영할 수 있도록 구조를 단순화했다.
이를 통해 미니맵은 항상 현재 플레이 상태를 왜곡 없이 전달하며, 이후 줌 시스템이나 NPC 정보 표시 같은 기능이 추가되더라도 기준이 흔들리지 않는 안정적인 기반이 된다.
이 구조를 바탕으로 다음 게시글에서는 미니맵의 시야 범위를 조절하는 줌 시스템과, 여러 입력 방식을 하나의 상태 흐름으로 통합한 설계를 다룰 예정이다.
