viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce882fa1bd62531c0a64993133e134c29906eec9892087c59c6b5bdf067bfd421c55d5e71ba6839777cba76e71ba024e7820d7d7583b0114e42dac2


아티스트 구인 홍보 겸 생각 정리를 위한 개발 일지입니다.


여기서 좀 더 게임의 특색을 추가하기 위해 "런앤건 + 로그라이크" 라는 장르를 시도하려는 기획이 있습니다.


그러기 위해서 기존 런앤건 장르 처럼 1스테이지의 맵이 있는 것이 아니라 노드로 구분된 맵들을 연결할 필요가 있는 데 오늘은 그것을 시도해볼 계획입니다.


우선 제 프로젝트는 맵 파일들을 Tiled로 제작하여 그것을 불러오는 식으로 처리하고 있습니다.


이렇게 외부 프로그램을 사용하는 것은 디자이너와 프로그래머 간의 결합도를 없애서 좀 더 협업하기 좋다고 생각하는데... 지금 프로그래머만 2명이라 무슨 의미가 있나 싶네요.


여튼 다시 본론으로 돌아오자면 연결하는 방법은 다음과 같습니다.


1. 맵에 입구와 출구 지점 만들기

2. 출구로 나가면 다음 맵 지점의 입구로 스폰 처리


그럼 간단하게 Tiled로 입구와 출구 지점을 만들어 주겠습니다.




24b0d121e09c28a8699fe8b115ef046a786dedc8



영역을 정해준 뒤 Custom Property를 추가하여 입구와 출구를 구분할 수 있도록 적절히 데이터를 넣어줍니다.


이렇게 넣어준 데이터는 XML 데이터를 읽어서 유니티에서 사용할 객체의 데이터로 적절히 파싱할 예정입니다.


public class PortalObj { public PortalType portalType; public float width; public float height; }


대충 요런 객체로 만들어 줄겁니다.


0ab4ca2bea92b4749634107958c12a3aa4dbad7f5afe2b1ff71c7b



맵을 로드하게 되면 위에서 설명한 객체를 데이터를 삼아 Gizmo를 그려주는 Game Object를 생성해서 입구, 출구가 구분되도록 그려주면 1단계는 완료라고 볼 수 있습니다.



a16b2cac301eb36792ff5a48c25acbc4867723c4b000cfdea41142f78cf75657


출구로 이동하게 되면 일단 사라지게 해서 충돌 체크도 적절히 되는지 확인합니다.


a67a0566692fe02d836e5a5ec79f3433a25cad5e5f367b3ce8cf89



그리고 맵을 이런 식으로 Layer 인덱스와 노드 인덱스를 통해 인덱싱 하여 찾아갈 수 있도록 할 겁니다.


public class MapNodePortalObj { public PortalType portalType; public float width; public float height; // 레이어 인덱스 public connectedNodeLayerIndex; // 해당 레이어에서 노드 인덱스 public connectedNodeIndex; }


그렇게 찾아갈 수 있도록 파라미터가 될 프로퍼티를 추가합니다.


그러면 포탈을 스폰하기 전에 적절한 인덱스들만 할당해주면 플레이어가 출구로 이동하면 현재 맵을 초기화하고 해당하는 노드의 맵을 불러오고 입구에 플레이어를 스폰하면 됩니다.


void OnExit(Collider2D other) { if (LifetimeScopeHelper.TryResolve<WorldService>(out var worldService)) { worldService.MoveToNode(new NodePosition(_portal.connectedNodeLayerIndex, _portal.connectedNodeIndex)).Forget(); } }


이런식으로 출구 포탈에 플레이어가 충돌하면 다음 맵을 불러오면 되는거죠 (페이드 인아웃 같은 노드를 넘어가는 효과를 위해 비동기처리로 구현했습니다.)




a67a05666e37e02d9d439639eb05afd25ee455e12932cb6817727f6ebeb1c0410d99


이렇게 2단계도 완료했습니다 물론 여기서 기획에 따라 몇 가지 처리가 더 필요하지만 일단 오늘은 여기까지 입니다!


아티스트 구인 홍보겸 일지를 간단하게 써보았는데 이렇게 일지 쓰는 게 처음이기도 하고 설명도 잘하는 편이 아니라서 돌이켜보면 모자란게 많네요.


뭐... 다음에 좀 더 발전된 일지로 찾아뵙도록 하고 아티스트 분들은 동방탄주록 오픈 카톡방이나 여기 댓글로 많은 지원 바랍니다.


부족한 부분이나 궁금한 점은 댓글로 질문 주시면 최대한 자세히 답변 달아드리겠습니다!