핵심 정리
text
Main Camera + Cinemachine Brain
<- 현재 live 상태인 Virtual Camera가 제어구조 이해
- Cinemachine을 이해하는 가장 좋은 출발점은 "실제 카메라를 직접 움직이지 않는다"는 점입니다. 메인 카메라에는
Cinemachine Brain이 붙고, 실제 연출은 여러 Virtual Camera가 담당합니다. - 각 Virtual Camera는 Follow, Look At, Body, Aim, Noise, Lens 설정을 통해 "이 장면에서는 카메라가 어떻게 움직여야 하는가"를 선언합니다. 그리고 Brain이 현재 가장 적절한 카메라를 live로 선택하거나 블렌드합니다.
- 이 구조의 장점은 카메라 연출을 코드보다 데이터와 상태 전환으로 다루기 쉬워진다는 점입니다. 탐색 카메라, 전투 카메라, 컷신 카메라, 대화 카메라를 분리해 두고 priority나 상태에 따라 전환할 수 있습니다.
- 그래서 Cinemachine은 단순한 follow 카메라 도구가 아니라 "카메라 상태 머신"에 가깝습니다. 어떤 상황에서 어떤 vcam이 active가 되고, 어떻게 블렌드되는지가 설계의 핵심입니다.
- 초기에는 Virtual Camera 하나만으로도 큰 이득을 보지만, 프로젝트가 커질수록 Brain, priority, state-driven 전환, timeline 연동의 가치가 커집니다.
체크포인트
| 상황 | 적합한 선택 |
|---|---|
| 카메라가 특정 대상을 따라가게 | Virtual Camera의 Follow 타겟 지정 |
| 카메라 전환(탐색→전투) | priority 변경 또는 VCam SetActive |
| 전환 시 부드럽게 블렌드 | Brain의 Default Blend Duration 설정 |
| 카메라 이상 동작 디버깅 | 어느 VCam이 live인지 Brain에서 확인 |
주의할 점
메인 카메라를 코드로 직접 이동하면 Cinemachine Brain과 충돌합니다. 위치 제어는 Virtual Camera에서 해야 합니다.
csharp
// ❌ 메인 카메라를 직접 이동 — Brain과 충돌
Camera.main.transform.position = targetPos;
// ✅ Virtual Camera의 Follow 타겟을 변경
[SerializeField] private CinemachineVirtualCamera vcam;
void SwitchTarget(Transform newTarget)
{
vcam.Follow = newTarget;
vcam.LookAt = newTarget;
}
// 카메라 전환이 필요하면 priority 조정
combatVcam.Priority = 15; // 더 높은 priority → live 전환
exploreVcam.Priority = 10;참고 링크
3 sources