13. CameraSystem
왜 필요한가
Mode 전환, Shake, Cinematic 진입 등 카메라 로직은 여러 스크립트가 transform을 직접 건드리면 즉시 충돌한다. CameraSystem은 실행 순서를 고정해 이를 방지한다.
언제 사용하는가
카메라 모드 전환, 흔들림/반동 연출, 시네마틱 진입/종료가 필요할 때.
프로젝트에서 어떤 역할인가
파이프라인 실행 순서(절대 규칙):
Mode Evaluate -> Behavior Tick -> MotionProcessor -> CameraCollisionSolver -> ModifierStack -> CameraBlendService -> FinalSolver
오직 FinalSolver만 camera.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를 거치지 않고 카메라 스크립트를 별도로 붙임
실습 과제
- 커스텀
ICameraModifier를 등록해 흔들림 효과를 추가해본다. EnterCinematic/ExitCinematic으로 컷씬 카메라 전환을 구현해본다.
이전 문서 / 다음 문서
이전: 12_UISystem.md 다음: 14_AudioSystem.md
관련 API
MCP_Index.md Camera 섹션