게임 개발/Unreal Engine

Lyra의 카메라 역할 분담

지노윈 2025. 12. 29. 19:14
반응형

1. 구조적 역할 분담

CameraComponent (Character에 부착)

  • 용도: 카메라의 '시점''기초 데이터'를 제공합니다.
  • 역할: 캐릭터의 머리 위나 어깨 뒤 등, 카메라가 물리적으로 어디에 위치해야 하는지(Transform), 시야각(FOV)은 얼마인지에 대한 정보를 가지고 있습니다.
  • 특징: 캐릭터(Pawn)에 종속되어 있으므로, 캐릭터가 죽거나 바뀌면 해당 컴포넌트도 사라집니다.

PlayerCameraManager (PlayerController가 소유)

  • 용도: 최종적인 '카메라 뷰'를 결정하고 렌더링하는 최종 의사결정자입니다.
  • 역할: CameraComponent로부터 받은 위치 정보를 바탕으로 포스트 프로세스 효과, 카메라 셰이크(Shake), 블렌딩(보간), 시야 제한 등을 최종 계산합니다.
  • 특징: 플레이어 컨트롤러에 붙어 있기 때문에 캐릭터가 사망하여 리스폰되는 과정에서도 카메라는 끊기지 않고 부드럽게 유지될 수 있습니다.

2. 왜 이렇게 분리해서 사용하나요?

① 관전 및 캐릭터 전환의 유연성

Lyra처럼 멀티플레이어 환경에서는 캐릭터가 죽고 다른 캐릭터로 빙의(Possess)하는 일이 빈번합니다.

  • 만약 CameraComponent만 사용한다면, 캐릭터가 파괴될 때 카메라도 즉시 사라져 화면이 툭 끊기게 됩니다.
  • CameraManager가 중심을 잡고 있으면, **A 캐릭터의 카메라 위치에서 B 캐릭터의 카메라 위치로 부드럽게 전환(Blending)**하는 로직을 구현하기가 매우 쉽습니다.

② 카메라 로직의 중앙 집중화

게임 중에 상점 창을 열거나 인벤토리를 열 때, 카메라가 캐릭터를 바라보는 것이 아니라 특정 UI 배경을 비춰야 할 때가 있습니다. 이때 캐릭터에 붙은 컴포넌트를 수정하는 것이 아니라, CameraManager에서 "지금은 이 뷰 타겟을 봐라"라고 명령만 내리면 됩니다.

③ 복합적인 카메라 효과 처리

CameraManager는 여러 소스에서 오는 데이터를 합칩니다.

  • 기본 위치: CameraComponent
  • 추가 효과: 카메라 셰이크(반동), 피격 애니메이션, 시야각 변화(줌)
  • 이 모든 것이 섞여서 최종 화면이 나오는데, 이 "섞는 작업"을 담당하는 전용 처리 장치가 바로 CameraManager입니다.

3. 요약 및 흐름

이미지에서 언급된 "CameraComponent는 직접 Update를 호출하기보다 CameraManager에 의해 업데이트가 진행된다"는 점이 핵심입니다.

구분 CameraComponent (Pawn) PlayerCameraManager (PC)
성격 데이터 제공자 (Anchor) 최종 처리기 (Processor)
위치 정보 캐릭터 기준 상대적 위치 월드 기준 최종 렌더링 위치
주요 기능 FOV, 가이드 라인 제공 블렌딩, 셰이크, 포스트 프로세싱 적용

결론적으로:

Lyra는 "카메라가 단순히 캐릭터를 따라다니는 눈이 아니라, 게임 상태에 따라 언제든 변할 수 있는 독립적인 시스템"으로 설계했기 때문에 이 구조를 채택하고 있습니다.

이 구조에 대해 더 궁금하시거나, Lyra의 CameraMode 시스템(데이터 에셋 기반)이 어떻게 연동되는지 알고 싶으신가요?

반응형