C# Unity 미니맵 만들기

삐얅·2024년 8월 1일
0

1. 개요

전에 맵의 콜라이더를 참고해서 미니맵을 그리는 작업을 했지만, 해당 그림이 잘나오는 편이 아니라서 다른 방식을 활용해 미니맵을 만들기로 했다.
콜라이더를 참고하는게 아니라 콜라이더를 담당하는 부분의 색을 변경하고 해당 부분을 참고해 맵을 만들었다.
이미지를 따로 만들어서 넣어놨는데 좀 더 간편한 방법이 있지 않을까 라는 고민이 들었다.

2. 미니맵 만들기

미니맵을 만드는데 먼저 미니맵만을 비출 카메라를 만들어줬다.
맵을 그대로 비추는게 아니라 맵의 색상을 단순화 시켜서 보이게끔 하게하기 위해 오브젝트를 따로 만들어줬다.
먼저 미니맵에 미니맵 부분만 보이게 레이어를 따로 설정해주고 카메라의 컬링마스크를 변경해준다.
이걸 UI에 반영하기 위해 Texture Render를 만들어주고 Canvas 하위에 rawimage를 만들어 카메라와 rawimage의 텍스쳐를 만들어둔 Texture Render를 반영해준다.
여기서 플레이어를 구분하는 색상이 반영되지 않아 헤맸는데, 원인은 빛이 문제였고 스프라이트의 마테리얼이 빛이 있어야 색상을 정상적으로 출력하는 마테리얼이었기 때문에 마테리얼을 빛이 없어도 되는 Unlit를 사용해 해결했다

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MiniMap : MonoBehaviour
{
    public Transform player;
    public GameObject miniMap;
    public Camera miniMapCamera;

    public List<GameObject> miniMaps;

    private void Start()
    {
        SetMinimap(1);
    }

    private void LateUpdate()
    {
        if(player != null)
        {
            Vector2 newPosition = new Vector3(player.position.x,player.position.y);
            miniMapCamera.transform.position = newPosition;
        }
    }

    public void SetMinimap(int stageNum)
    {
        Debug.Log(stageNum);
        for(int i = 0; i < miniMaps.Count; i++)
        {
            if(i == stageNum - 1)
            {
                miniMaps[i].SetActive(true);
            }

            else
                miniMaps[i].SetActive(false);
        }
    }
}

하나의 씬에서 여러 스테이지를 오가기 때문에 스테이지들을 리스트로 선언해 관리해주고 해당 스테이지의 맵만 활성화 되도록 코드를 작성했다.
카메라의 위치는 플레이어를 따라가도록했다.

0개의 댓글

관련 채용 정보