[UE4] Camera Pawn 으로 줌인 / 줌아웃 및 카메라 전환 기능 구현하기
언리얼로 게임을 만들던 중, 휠로 카메라를 줌 인 / 줌 아웃 하는 기능이 필요해졌다.
게임의 기본 상태는 레벨의 랜드스케이프가 한눈에 들어오게끔 했지만, 원한다면 더 가까이 보거나 시점 카메라를 변경할 수 있도록 구현해 볼 것이다.
대부분의 튜토리얼은 Thirdpersoncharacter의 컴포넌트 카메라를 확대함으로써 조준을 하거나, 캐릭터를 조금 더 크게 볼 수 있도록 하는 방식이었다.
하지만 이 게임에는 따로 캐릭터가 존재하지 않고 내가 원하는 것은 게임 레벨 안에 배치 된 카메라가 곧 플레이어가 되는 것이었기 때문에 카메라 폰
을 만들어 사용하기로 했다.
구현 과정

게임의 메인 레벨에 생성한 랜드스케이프.
위 사진과 같이 아래로 내려다보는 시점을 시점1로 하였고 이 상태에서 휠 업 / 휠 다운을 하면 줌인아웃이 되도록 블루프린트를 작성해볼 것이다.
그리고 다른 카메라로 시점 2를 추가해 숫자 키를 누르면 전환되도록 하는 것이 목표이다.
Camera Pawn 생성
우선 Pawn을 선택한 이유는, 플레이어 컨트롤러로부터 input을 받을 수 있으며 (휠 업, 휠 다운) possess가 되기 때문.
(처음엔 어떤 걸 써야할 지 몰라서 카메라 액터, 캐릭터를 다 생성해서 써봤는데 그 차이를 확실히 느낄 수 있었다. 확실히 설명을 읽는 것보다 직접 써보는 게 답이 나오는 것 같다.)

Pawn Component의 Scene에 Spring Arm, 그리고 그 Spring Arm에 카메라를 추가해준다.

그럼 이런 형태가 되는데, Spring Arm은 단어 그대로에서 느낄 수 있듯 카메라와 거리가 늘었다 줄었다 할 수 있는 팔이라고 이해하면 쉽다.
스프링 암을 이용하면 카메라를 이동 제어 할 수 있게 된다.
블루프린트 작성 (카메라의 Scroll zoom)
그리고 이벤트 그래프에 위와 같이 블루프린트를 작성해주었다.
Min FOV (Minimum Field of View) 와 Max FOV (Maximum Field of View) 라는 float형 변수를 만들어준 뒤 아까 추가해주었던 카메라의 FOV 값을 가져와 비교해 더하거나 빼주는 로직
Min FOV 값과 Max FOV 값을 변화시키면 확대 / 축소되는 정도 조절할 수 있다.
또한 더하거나 빼는 값을 3이 아닌 더 작은 값으로 바꾸어 준다면 최대로 확대 / 축소 시키기 위해 휠을 더 많이 돌려야 할 것이다.
두 번째 카메라 생성 / 카메라 배치
처음에 만들었던 카메라를 간단히 하나 더 복제해서 사용하기로 하였다.


월드에 카메라 두개를 배치하고 원하는 시점에 맞게 위치와 방향을 조절해준다
블루프린트 작성 (카메라 변환)
레벨 블루프린트 안에 위와 같이 블루프린트를 작성했다.
숫자 키 1 로는 CameraOne, 2로는 CameraTwo로 전환할 수 있다. (플레이어 컨트롤러를 가져와서 각 카메라 폰에 Possess)
만약 꾹 누르고 있어야하고 키를 떼면 다시 돌아오는 기능을 구현하고 싶다면 노드의 Released 부분을 활용하면 되고,
키 하나로 카메라 1-2 전환을 모두 하고싶다면

결과
Pawn의 Possess Player 설정을 잊지 않고 해준다.

이렇게 카메라가 플레이어의 시점이 되고, 마우스의 스크롤을 사용해 줌인 / 줌아웃을 할 수 있게 된다
그리고 카메라 전환을 위해 숫자 2 키를 누르면

Possess하고 있는 폰 카메라가 전환되고 기능이 같기 때문에 휠 사용을 이용한 줌도 가능하다.
실제로는 이것보다 부드러우나 gif의 크기 문제로 프레임 수를 줄이면서 조금은 끊기는 듯 보이게 됐다.
이걸 응용하면 정말 다양한 걸 만들 수 있을 것 같다. 당장 생각나는 건 게임 속 CCTV 나 망원경, RTS 게임의 카메라 컨트롤 정도인데 ..
이렇게 하나하나 배워가는 게 머릿속에서 자연스럽게 활용방법과 연결되는 점이 재미있다.
참고자료