Table of Contents

13. CameraSystem

왜 필요한가

Mode 전환, Shake, Cinematic 진입 등 카메라 로직은 여러 스크립트가 transform을 직접 건드리면 즉시 충돌한다. CameraSystem은 실행 순서를 고정해 이를 방지한다.

언제 사용하는가

카메라 모드 전환, 흔들림/반동 연출, 시네마틱 진입/종료가 필요할 때.

프로젝트에서 어떤 역할인가

파이프라인 실행 순서(절대 규칙):

Mode Evaluate -> Behavior Tick -> MotionProcessor -> CameraCollisionSolver -> ModifierStack -> CameraBlendService -> FinalSolver

오직 FinalSolvercamera.transform을 수정할 수 있다.

실제 게임에서는 언제 호출되는가

전투 진입 시 SetMode("Combat"), 피격 시 Shake, 컷씬 진입 시 EnterCinematic.

코드 예제

[Inject] private ICameraSystem _camera;
_camera.SetMode("Combat");
_camera.Shake(intensity: 0.5f, duration: 0.2f);

관련 Sample

Samples/Camera/CameraSystemSample.cs, CameraQuickStartSample.cs, CameraExtensionSamples.cs

Best Practice

새 카메라 연출은 ICameraModifier/ICameraBehavior로 등록해 파이프라인에 태우고, transform을 직접 건드리지 않는다.

자주 하는 실수

  • FinalSolver 이외 단계에서 camera.transform 직접 수정
  • Mode/Behavior를 거치지 않고 카메라 스크립트를 별도로 붙임

실습 과제

  1. 커스텀 ICameraModifier를 등록해 흔들림 효과를 추가해본다.
  2. EnterCinematic/ExitCinematic으로 컷씬 카메라 전환을 구현해본다.

이전 문서 / 다음 문서

이전: 12_UISystem.md 다음: 14_AudioSystem.md

관련 API

MCP_Index.md Camera 섹션