게임에서 카메라가 작동하는 방법은 다양하며, 이는 제작하는 게임 타입에 따라 크게 달라질 수 있습니다. 언리얼 엔진에서 카메라는 일반적으로 스프링-암 컴포넌트가 있는 액터와 뷰를 렌더링하는 카메라 컴포넌트로 구성됩니다. 기본적인 카메라 구성에 대해서는 언리얼 엔진에서 카메라 사용하기를 참조하세요.
이 문서에서는 구체적으로 개발자가 패럿용 카메라 구현 방식을 어떻게 결정했는지를 살펴보고 주목할 만한 세팅에 대해 알아봅니다.
패럿 카메라 서브시스템
먼저, 월드에 따라 고유한 카메라 세팅이 필요할 수 있는 각 맵을 식별했습니다.
개발자는 월드의 수명을 공유하고 BeginPlay 시점에 이러한 세팅으로 카메라를 초기화하는 UParrotCameraSubsystem을 생성했습니다. 맵별 세팅은 맵별 데이터를 저장하는 데 유용한 AParrotWorldSettings에 저장됩니다. 카메라의 경우, 사용하려는 카메라 클래스, 무브먼트 모드 및 카메라가 플레이어를 더 이상 따라가지 않도록 할 Z축의 상한/하한 바운더리가 이러한 세팅입니다. 이 클래스 자체는 선택 사항이며 제공하지 않아도 문제가 되지 않습니다. 이는 메인 메뉴에서 사용되는 방식입니다.
서브시스템을 사용하기로 하는 이유에 대해서는 패럿의 서브시스템 문서를 참조하세요.
월드 세팅은 에디터의 월드 세팅(World Settings) 패널에서 확인할 수 있습니다.
패럿 카메라
AParrotCamera는 대부분의 로직이 처리되는 곳입니다. 카메라가 서브시스템에 의해 초기화되면 따라갈 플레이어, 무브먼트 모드, 월드 세팅의 바운더리가 주어집니다.
카메라에는 None, Fixed, Follow, 이렇게 세 가지 무브먼트 모드가 있습니다.
없음(None)은 말 그대로 카메라가 아무것도 하지 않습니다.
고정(Fixed) 무브먼트 모드는 간단합니다. 플레이어가 바운드 볼륨에 진입하면 카메라 서브시스템이 카메라에 고정된 위치를 전달하고, 해당 위치로 카메라가 보간됩니다. 그러면 플레이어는 무브먼트 모드가 업데이트될 때까지 자유롭게 이동할 수 있습니다.
따라가기(Follow) 무브먼트 모드는 좀 더 복잡한데, Content/Blueprints/BP_PlatformerCamera를 참조하면 시각적으로 가장 잘 이해할 수 있습니다. AParrotCamera에는 디폴트 서브오브젝트로 무브먼트 트리거 박스와 블로킹 메시가 있습니다. 즉, AParrotCamera의 모든 인스턴스에는 이 두 컴포넌트가 계층구조에 자동으로 추가됩니다. 둘 다 원하는 이펙트에 맞춰 카메라 프러스텀, 스프링 암, 시점에 맞춰 정렬됩니다. 이 두 컴포넌트는 모두 카메라 액터에 어태치되어 월드 내에서 카메라 액터를 따라갑니다.
블로킹 메시는 월드에서 플레이어와 충돌함으로써 플레이어가 뒤로 이동하는 것을 막습니다.
플레이어가 무브먼트 트리거 박스에 오버랩되면 카메라가 설정된 속도로 플레이어의 X값으로 보간하려고 시도합니다. 속도는 또한 플레이어가 트리거 볼륨의 가장 왼쪽 경계를 얼마나 지나쳤는지에 따라 곱해져 조정됩니다. 이러한 방식으로, 플레이어가 트리거 볼륨 안으로 더 깊이 들어갈수록 카메라는 따라잡기 위해 더 빨리 이동하게 됩니다.
그 결과 플레이어가 화면 왼쪽에서 블로킹 메시까지는 자유롭게 돌아다닐 수 있지만, 한계치를 넘어서면 카메라가 플레이어와 함께 이동하게 됩니다. 이는 플레이어가 X축을 따라 월드를 이동할 때 멋진 이펙트를 제공합니다.
따라가기(Follow) 무브먼트 모드에서 주목해야 할 또 다른 부분은 플레이어의 마지막 알려진 위치가 추적된다는 점입니다. 플레이어의 Z축이 월드 바운드를 넘어서거나, 플레이어 캐릭터가 소멸되면 카메라가 플레이어의 마지막 알려진 위치로 보간합니다. 이렇게 하면 플레이어의 무브먼트/스테이트에 따른 카메라의 부자연스러운 행동이 방지됩니다.
마지막으로, BP_PlatformerCamera의 카메라 컴포넌트 자체에 몇 가지 주목할 만한 세팅이 있습니다. 투영 모드(Projection Mode)는 원근(Perspective), FOV는 90도, 종횡비(Aspect Ratio)는 표준 HD인 1.77로 설정되어 있습니다. 카메라 옵션(Camera Options)에서는 애플리케이션의 실행 해상도에 관계없이 카메라가 항상 올바르게 보이도록 종횡비를 제한합니다.