안녕하세요!
이번에는 이런 탑뷰형식 게임에서 고질적인 문제인 스프라이트 순서 처리에 대해서 써볼까 합니다
오브젝트간에 "누가 앞에 있는가?"에 관해서 기본적으로 y좌표값을 비교해서 처리할 수 있습니다

보시다시피 딱히 문제가 없어 보입니다

하지만 이렇게 높이 개념이 들어가면 추가적인 처리를 해줘야합니다

저희는 유니티에서 sorting axis 기능을 지원을 해서 이걸 쓰고 있습니다
sorting axis를 (0,1,1) 벡터로 세팅했
이렇게 하면 (0,1,1) 방향으로 순서가 자동으로 정렬이 돼서 카메라에 보이게 됩니다
그러니까 물체가 높아지면 y축이 상승하는데, 이러면 자신보다 아래에 있는 물체에 가려져버리죠
그래서 z축은 반대로 감소시켜서 부자연스러운 현상이 안일어나게 했습니다
다른 방법으로는 Update주기마다 SpriteRenderer에서 order in layer를 직접 세팅하는 방법도 있다고 하네요
제가 볼 때는 이것 말고도 다양한 방법이 있는 것 같습니다
다음으로 까다로웠던 부분이 타일맵과 오브젝트간의 순서처리입니다


사실 이런식으로 자연스럽게 하기 위해 다양한 삽질을 했습니다
원래는 타일과 타일 사이에 오브젝트가 비집고 들어가서 끔찍한 모습이 연출됐었습니다
아예 언덕부분이랑 캐릭터랑 겹치는 일이 없도록 디자인해보기도 하고
언덕의 경사를 느슨하게 해서 겹쳐도 어색하지 않게 해보기도 하고 (젤다처럼)
타일맵을 레이어별로 분리하기도 하고 (이런 게임도 은근히 많더라고요, 위자드 오브 레전드같은)
아예 타일마다 z값을 줘보기도 했는데, 다 저희 게임에는 어울리지 않았습니다

결국 저희는 타일의 언덕 부분의 z값을 조정해서 캐릭터가 가려지도록 하는 방법을 선택했습니다(위 스샷의 빨강/파랑/보라/주황 테두리 안 부분)


그래서 3d 카메라로 저희 게임을 바라보면 위 짤처럼 나오게 됩니다
읽어주셔서 감사합니다!
---이전글-----
1편 소개
2편 괴물
3편 약탈자
4편 파편시스템
5편 대쉬퍼즐
6편 브금소개
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.