[UE5 : Paper2D(BP) - 타일맵] Chapter 03. 타일맵 정보 추출
GitHub : https://github.com/developeSHG/UE5-Paper2D/commit/7460d3fa9cd3d0fa92f511b877ab8b9cdf1b4adc
맵 정보를 추출해서, 어느 구역은 갈 수 있는지 없는지 등등을 추출해서 관리할 것이다.
타입 맵에 대한 정보를 어떻게 추출할까. 여태 했던 것을 응용하면 알 수 있다.
Tile Map을 게임에 배치하면 아웃라이너 쪽에 Type이 PaperTileMapActor로 알 수 있다.
몬스터나 플레이어의 경우 항상 상속 구조를 통해 해당 클래스에 기능을 추가하거나 기능을 추출해서 사용하는 식으로 작업을 했다. Tile Map도 예외가 아니다.
이것을 상속받아서 새로운 블루프린트 클래스를 만들어 배치하면 된다.
Render Component를 보면 타일 맵을 골라줄 수 있는 란이 있는데, 만들어 준 Tile Map을 설정하면 아래와 같은 식으로 생성이 된다.
이것도 블루프린트 클래스이다보니, 이벤트 그래프 쪽도 begin play, overlap, event tick 등등이 있고 블루프린트 문법을 이용해 정보를 추출할 수 있다.
전까지는 툴을 사용해 정보를 기입해놨는데, 결국에는 언리얼, 유니티 엔진이건 기능을 만들 때는 프로그램을 툴에 기능을 만들어 준 다음에, 그 기능을 툴이랑 연동을 하는 식으로 작업이 되어 있을 것이다.
그렇다는 것은 블루프린트 클래스 타일맵에다가 함수를 꺼내주면 어떤 타일맵에 대한 정보를 추출할 수 있을 것이다 라는 믿음을 갖고 시작해야 된다.
배치한 맵 자체가 어디에 위치해 있느냐를 보면 Render Component에 타일 맵이라는 것에 있으니 렌더 컴포넌트를 꺼내 Get Tile이라는 걸 사용해서 가져올 수 있다.
Layer는 애당초 타일맵을 만들 때, 0번(Ground), 1번(Wall) 로 두 개를 만들어 줬으니 그 Layer를 의미하지 않을까 라는 예상을 할 수 있다.
어떤 특정 좌표에 특정 레이어를 알고 있으면 해당하는 타일이 있는지 없는지 의문은 이것을 이용해서 validation 체크를 하면 구현할 수 있다.
이런식으로 헤딩을 하다보면 원하는 기능을 찾을 수 있기도 하다.
맵에 있는 정보를 추출해서 갈 수 있는 영역인지 따로 불리언 배열로 빼 보도록 할 것이다.
10x10이니 배열로 관리한다.
Tile Map의 Width와 Height를 추출해서 맵의 사이즈에 대응하도록 연산해주는 부분.
아까 Get Tile 함수와 validation 체크하는 부분을 가져와서, 하나씩 좌표를 순회하면서 벽(Wall) 타일이 있는지 체크하는 부분.
(몫과 나머지를 구하는 부분은 1차원 배열을 2차원 배열의 인덱스로 환산하기 위해 연산한다.)