참여하는 프로젝트에서 맵을 isometric 형태로 제작할 것 같아서 해당 부분의 정보에 대해 잠시 기록해두려고 한다.
0. Isometric의 정의
1. 목적
2. 구현 방식
0. Isometric?
0.0. Projection 방식
(+Projection : 3차원 물체를 2차원에 보여지게 하는 방식.)
Isometric과 같이 세 면이 다 보이는 방식에는 총 3종류가 있다.


- 화면에 투영되었을 때 수평선을 기준으로 대칭되는 각도, 엣지의 길이에 따라 Projection 종류가 결정된다.
(가장 정석적인 Isometric Projection은 잘 사용하지 않고, 일반적으로 그래픽의 비율을 2:1 형태로 압축해서 사용된다.)
<실제 화면에서 구현되었을 때 모습>

직관적으로 Projection 구분 방법 : 가장 쉬운 방법은 게임 내 정사각형의 각도 확인.
1. 목적
일반적인 2D처럼 한 면만 보여지거나, 3D처럼 모든 면을 다 볼 수 있는 것이 아닌 세 면만 보이는 구조이다.
- 3D는 아니지만, 단순히 한 면만 보이는 2D일 때보다 더 많은 정보를 얻을 수 있어서 한 화면을 통해 정보를 많이 얻어야 하는 게임에 적합하다.
(시뮬레이션, 타이쿤, 실시간 전략과 같은 건설 유형 게임)
2. 구현
일반적으로 3D + 2D가 결합된 형식을 이용한다.
* 2D만 이용할 경우
- flat edge가 없어서 물체들이 겹치게 될 경우 해결이 어렵다. (sprite의 pivot을 아래로 움직이면 일반적으로 해결할 수 있지만, 물체가 직사각형일 경우에는 해결할 수 없으므로 해당 경우에 관련된 스크립트를 따로 작성한다.)
- 물체를 움직이게 할 경우, 벡터의 크기가 절반으로 줄어들며, 그에 따른 각도 또한 따로 연산해서 값을 넣어야 한다. (삼각형의 구조이기 때문.)
- 그림자가 보여져야 할 경우 물체가 렌더링되었을 때 그림자가 처리되도록 후처리 작업이 필요하다.
* 3D만 이용할 경우
- 3D 모델링 작업이 어렵다.
- 상대적으로 2D 스러운 느낌이 적어져서 자체 쉐이더를 적용해 전체적인 그래픽 분위기를 맞춰야 할 가능성이 높다.
- 다만 회전/움직임(애니메이션) 분야의 프로그래밍 작업이 좀 더 편하다.
- 오브젝트 순서 작업에 대한 문제점이 사라진다.
* 3D + 2D 사용할 경우
(특정 오브젝트 앞에 이미지를 배치한 뒤 이미지 배경을 스프라이트로 설정한다. 그리고 오브젝트의 메쉬 렌더러를 비활성해서 충돌 처리 부분에 관련된 것을 해결한다.)
- 충돌 처리 작업이 잘 되어야 한다. (collider 버그가 잘 생길 수 있어서 해당 부분을 잘 처리해야 한다.)
- 셰이더 처리와 같은 추가 그래픽스 작업 없이 아트의 전체적 분위기가 통일될 수 있다.
- 오브젝트 배치 순서, 회전과 같은 문제점에 대해 고민하는 이슈가 상대적으로 적은 편이다.