디아블로, 로스트 아크, 리그오브레전드 등 다양한 게임이 사용하는 시야는 탑다운 뷰이다. 이때 정확히 위가 아닌 공간의 각도가 45도 정도 비틀어져 바닥 타일이 마름모 모양인 경우는 탑다운 뷰에 속하는 쿼터뷰로 분류된다.
[쿼터뷰 예시 - 출처 : 인벤]
이러한 시점의 특징은 캐릭터를 중앙에 고정하고 캐릭터 이동에 따라 카메라가 이동하는 것이다. 확대 축소 혹은 각도 조절이 가능하기도 하고, 캐릭터 고정을 해제하고 카메라로 월드 내를 자유롭게 이동할 수 있는 기능을 추가하기도 한다.
우리가 만들어 볼 것은 간단하게 캐릭터를 기준으로 카메라를 고정하고, 캐릭터 이동에 따라 카메라를 이동하는 것이다.
캐릭터 C++ 클래스를 생성하고, 이를 부모로 하는 블루프린트 클래스를 만들어 주었다. 기본 캐릭터 클래스이므로 컴포넌트 등이 부족한 상태이다.
블루프린트 에디터를 열어 캡슐 컴포넌트
의 자식으로 SpringArm
, SpringArm
컴포넌트의 자식으로 Camera
컴포넌트를 부착해 주었다. 이제 새롭게 부착한 컴포넌트의 프로퍼티를 조정해주어야 한다.
SpringArm
은 캐릭터와 카메라를 연결해주는 지지대 역할을 한다. 사람과 핸드폰을 연결해주는 셀카봉과 같은 역할을 한다고 보면 된다. 탑다운 뷰를 구현하기 위해 SpringArm
컴포넌트의 다양한 섹션을 손봐주어야 한다.
변수의 카테고리를 카메라
로 변경해 준다. 카테고리는 유니티 엔진으로 따지면 태그
정도로 볼 수 있다. 해당 변수가 어떤 부류에 속할 것인지 지정해주는 역할을 한다.
카메라는 암의 끝 부분에 달려 있기 때문에, 암이 이동하고 회전하는 것이 카메라에 전달된다. 또한, 암의 반대편 끝에는 캐릭터가 연결되므로 캐릭터가 회전하는 것이 암에 전달될 것이다. 우리가 구현할 카메라는 회전하지 않게 할 것이므로 캐릭터의 회전이 암에 전달되지 않도록 설정한다.
회전
프로퍼티의 타입을 상대
에서 월드
로 변경하면, 현재 SpringArm
컴포넌트가 부착된 부모 컴포넌트의 회전이 아닌 월드의 회전에 영향을 받게 되어 캐릭터가 움직이면서 회전하더라도 암에는 전달되지 않는다. 이후 피치(Y)
를 -50°로 설정해 대각선으로 캐릭터를 내려보게 설정한다.
타깃 암 길이
프로퍼티를 1400으로 설정해준다. 타깃 암 길이는 셀카봉 길이라고 보면 된다. 암의 양 끝에 달린 캐릭터와 카메라 사이의 거리를 조절해준다. 이때 언리얼의 길이 단위는 (cm)이므로, 1400cm를 떨어뜨린 것이라고 볼 수 있다. 실제로 따지면 14m를 떨어뜨린 것인데, 너무 먼데..? 하지만 인게임에서 보았을 때 이 정도가 적당하다.
콜리전 테스트 실행
프로퍼티를 비활성화해준다. 카메라 클리핑이란 카메라가 바라보고 있는 액터를 다른 액터가 가렸을 때 카메라를 끌어 당겨 가리는 액터의 앞으로 가져오는 것이다. 아래 그림을 참고하자. 벽에 가까이 다가갔을 때 우측처럼 카메라를 끌어 당긴다.
현재 게임에서 플레이어가 벽에 가리더라도 가리는 액터의 투명도를 조절하는 등의 기법으로 처리할 것이고, 카메라는 움직이지 않게 할 것이므로 클리핑이 일어나지 않도록 콜리전 테스트를 꺼준다.
카메라 렉 활성화
프로퍼티를 활성화하여 캐릭터가 이동할 때 약간의 지연 시간을 두고 카메라가 이동하여 부드러운 움직임을 주도록 한다. 이때, 너무 긴 지연을 주지는 않도록 카메라 지연 속도
를 3으로 설정했다.
SpringArm
과 마찬가지로, 카메라의 카테고리 또한 카메라
로 변경해준다.
필드 오브 뷰
프로퍼티를 55도로 설정해준다. 이는 그래픽스에선 FOV, 사진술에선 화각이라는 용어로 불린다. 카메라가 담을 수 있는 영역의 각도를 의미하는데, 아래 사진을 보면 쉽게 이해가 된다.
[FOV - 출처 : ResearchGate]
이것이 게임에선 다음과 같은 차이를 준다.
[그래픽스 FOV - 출처 : Youtube]
이때 주의깊게 보아야 할 것은 그래픽스 FOV의 중앙부에 가까워질수록 차이가 나타나는 것이다. 같은 크기의 화면 안에 더 많은 화각을 표현해야 하기 때문에 거리가 멀수록 밀집되어 왜곡되는 현상을 확인할 수 있다. 특히 FPS 게임에서 FOV는 중요한 요소이지만, 과도한 왜곡으로 게임에 지장을 주지 않을 정도의 설정을 해주는 것이 중요하다.
아직 캐릭터에 대한 애니메이션 적용이 안 되어서 액터가 어색하지만, 카메라 세팅은 잘 된 것을 확인할 수 있다.