MapManager

starkshn·2022년 5월 10일
0

2D_Project

목록 보기
8/23
post-thumbnail

충돌 처리

카메라 따라서 이동 처리


이녀석의 역할

  • 맵 로드 및 삭제

  • 로드했을 때 Collision파일 추출 -> 갈 수 있는지 없는지 구분


이럴경우 ToString 형식에 맞춰서 다른 부분만 string으로 변경해줌.

이런식으로 해준다.

그리고 Load, Destroy부분은 이렇게 해주도록 하자.

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

public class MapManager
{
    public Grid CurrentGrid { get; private set; }
    public void LoadMap(int mapId)
    {
        DestroyMap();

        string mapName = "Map_" + mapId.ToString("000");

        GameObject go = Managers.Resource.Instantiate($"Map/{mapName}");
        go.name = "Map";

        GameObject collision = Util.FindChild(go, "Tilemap_Collision", true);
        if (collision != null)
        {
            Debug.Log("Find! C");
            collision.SetActive(false);
        }

        CurrentGrid =go.GetComponent<Grid>();

    }

    public void DestroyMap()
    {
        GameObject map = GameObject.Find("Map");
        if (map != null)
        {
            GameObject.Destroy(map);
        }

        CurrentGrid = null;
    }


}

프로퍼티로 이렇게 Grid를 가져올 수 있게 해주도록 하고

Scene에서

이거 삭제하고 씬자체에서 Map가져올 수 있도록 해보도록 하자.

지금 이까지 하면 잘 로드된다.

그리고

충돌을 볼 수? 있는 부분이 다른데 타일의 앵커? 부분을? 크기를 똑같이 늘려주는 부분을 해보도록 하자.

MapEditor이렇게 수정을 하고

Tool 눌러서 txt파일 갱신 ㄱㄱ

그리고

수정이 잘되었는데 이 파일을 실제 메모리에서 들고있도록 해주자.

그래서 이제 이녀석이 Map의 정보라서 이녀석을 이용해서

MapManager가 정보를 들고있도록 해주자.

냅 배니져에서 Load<>로 로드한다음에 StringReader라는 녀석이 있는데

문장 단위로 읽을 때 편리한 녀석임

txt.text를 꺼내주면 string으로 반환해준다.

반환한것을 한줄한줄 씩 파싱 해야함.

이렇게 37~40 번째 줄 한줄 씩 파싱한다음

for문 돌면서 1이면 true, 아니라면 false로 채워주면됨.

그리고 CanGo라는 함수를 만들어서

갈 수 있는지 없는지를 확인하고

이것을 PlayerController에서

실제로 옮기기 전에 MapManager한테 물어봐야한다.

그래서 이랬던 부분을

이렇게 수정을 해주도록 하자.

if문 막 안써도 됨 이래하면.


중간에

이부분 +1 안해주어서 에러 났었고

또 파일을 긁어오는 부분에서

y 좌표가

위로 갈 수록 커지기 때문에 int y가 저따구면 안되고

이렇게 되어야함.

profile
혼자 학습하기 위한 공간.

0개의 댓글