미니맵 이미지
일단 미니맵을 랜더텍스쳐로 카메라에 연결하여 하는 것이 아닌 맵 자체를 캡쳐하여 스프라이트 이미지 형태로 만들었습니다.
플레이어 표시
맵 상단 왼쪽에 미니맵UI를 만들고 플레이어는 움직이지 않도록 미니맵UI 가운데에 배치하였습니다.
미니맵 스크립트를 만들어서 플레이어가 움직인 만큼 미니맵의 UI를 움직여주었습니다.
private void Start() { if (player != null) { // 초기화 시 플레이어의 초기 위치 저장 playerLastPosition = player.position; } } private void Update() { if (player != null) { // 플레이어의 현재 위치를 가져옵니다. Vector3 playerPosition = player.position; // 플레이어가 이동한 만큼 맵의 위치를 반대로 이동시킵니다. Vector3 offset = playerPosition - playerLastPosition; // 플레이어의 z방향 이동을 미니맵의 x 방향 이동으로 변환합니다.> float mapMovementX = -offset.z * moveXSpeed; // 플레이어의 x방향 이동을 미니맵의 y 방향 이동으로 변환합니다.> float mapMovementY = offset.x * moveYSpeed; // 미니맵의 움직임을 플레이어와 동기화하되, 특정 범위 내에서만 움직이도록 제한합니다. float clampedMapX = Mathf.Clamp(map2d.localPosition.x + mapMovementX, minX, maxX); float clampedMapY = Mathf.Clamp(map2d.localPosition.y + mapMovementY, minY, maxY); // 미니맵의 위치를 업데이트합니다. map2d.localPosition = new Vector3(clampedMapX, clampedMapY, 0); // 플레이어의 현재 위치를 저장합니다. playerLastPosition = playerPosition; } }
플레이어가 움직인 만큼 UI의 방향을 플레이어가 움직인 방향에 맞게 조정하여 움직이도록 동기화를 하여서 원래 카메라를 사용하여 만들었던 미니맵 처럼 보이도록 구성하였습니다.