2025-05-28

시네머신 카메라의 가장 기본 속성인 Cinemachine Camera 의 속성들에 대해 알아보려고 한다.
지난 Sample - 2.ClearShot 에서는 3개의 자식 카메라가
각각 Rotation Composer, Follow 속성으로 이루어져 있었는데,
Position Control 과 Rotation Control 에 어떤 방식이 있는지 알아볼 것이다.
먼저 알아볼 것은 Cinemachine Camera 의 공통 속성이다.
Cinemeachine 공통 프로퍼티
| 속성 | 설명 |
|---|---|
| Priority | 숫자가 클수록 우선 순위가 높아져 해당 카메라가 활성화됨 |
| Output Channel | 특정 카메라 그룹(Channel)로 라우팅하여 카메라 간 전환을 제어함 (특정 기능과 연계 가능) |
| Standby Update | 카메라가 비활성화 상태일 때의 업데이트 방식 - Never : 완전히 멈춤 - Always : 항상 업데이트 - Round Robin : 순환적으로 업데이트 |
| Blend Hint | 카메라를 전환하는 데 필요한 힌트를 제공 여러 개를 조합할 수 있지만, 서로 충돌할 경우에는 시네머신이 임의로 선택한다. |
여러 카메라가 활성화 상태일 경우, Prioirty 가 가장 높은 카메라가
최종적으로 Cinemachine Brain 을 통해 화면에 출력된다.
프로퍼티를 통해 카메라 간 전환이나 업데이트 방식 등을 상황에 맞게 설정해주자.
Lens 속성
| 속성 | 설명 |
|---|---|
| Vertical FOV | 카메라의 수직 시야각 (Field of View). 일반적으로 40~60 사이의 값 사용 |
| Near Clip Plane | 카메라가 렌더링을 시작할 최소 거리 (가까운 거리의 물체 잘림 현상 방지) |
| Far Clip Plane | 카메라가 렌더링할 수 있는 최대 거리 (멀리 있는 물체가 이 거리 넘으면 보이지 않음) |
| Dutch | 카메라를 좌우로 기울이는 회전 각도 (영화에서 감정 표현 등에 사용됨) |
| Mode Override | 카메라의 Projection Mode를 강제로 설정 |
| └ None | 기본 설정 사용 |
| └ Perspective | 원근 카메라 (거리에 따라 물체의 크기가 다르게 보임, 3D) |
| └ Orthographic | 직교 카메라 (거리와 상관 없이 항상 같은 크기로 보임, 2D) |
이 부분은 최적화(렌더링 관련) 나 장면 연출에 큰 영향을 주는 부분이라서
파라미터들을 수정해보며 원하는 장면 연출을 찾으면 될 것 같다.
이전 시네머신 버전의 Framing Transposer 이다.
위치 제어 시스템으로 훨씬 더 모듈화되어 필요한 기능을 선택할 수 있다.
Unity - Cinemachine 3 - Position Control
| 옵션 | 설명 | 사용 예시 |
|---|---|---|
| None | 카메라가 어떤 대상도 따라가지 않음. 수동으로 위치 지정 | 컷씬용 고정 시점 |
| Follow | 단순히 추적 대상 (Tracking Target) 을 지속적으로 따라감. Follow Offset, Damping 적용 가능 | FPS, TPS 기본 시점 |
| Spline Dolly | 미리 만든 Spline(곡선 경로)를 따라 카메라를 이동시킴 | 레일 기반 카메라, 자동 연출 |
| Third Person Follow | 추적 대상(Tracking Target)을 회전 축으로 하여, 수평 및 수직 방향으로 카메라가 회전 | 3인칭 액션 게임 |
| Orbital Follow | 대상 주변을 회전하며 따라가는 카메라. 마우스 또는 터치로 궤도 회전 가능 | 캐릭터 커스터마이징 화면 등 |
| Position Composer | 추적 대상과의 고정된 화면 공간 관계를 유지하며 이동 | 2D 게임, 시네마틱 추적 등 |
카메라가 특정 Tracking Target 을 지정된 상대 위치에서 따라가는 방식이다.
⚠ A Tracking Target is required in the CinemachineCamera.
는 Cinemachine Camera 의 Tracking Target 을 설정해주지 않아서 뜬 문구이니,
Follow 할 대상 오브젝트를 추가해주자.
| 프로퍼티 | 설명 |
|---|---|
| Binding Mode | 카메라가 타겟을 따라갈 기준 좌표계를 설정 |
| └ Lock To Target On Assign | 카메라가 활성화되거나 타겟이 할당될 때, 타겟의 Local 방향을 기준으로 고정. 이후, 카메라는 타겟과 함께 회전하지 않는다. |
| └ Lock To Target With World Up | 타겟의 Local 좌표계를 따르되, 기울기(Tilt) 와 롤(Roll) 을 0 으로 설정 |
| └ Lock To Target No Roll | 타겟의 Local 좌표계를 사용하며, 롤(Roll) 만 무시 |
| └ Lock To Target | 타겟의 Local 좌표계를 사용 대상이 회전하면 카메라도 같이 회전한다. |
| └ World Space | 오프셋을 타겟의 원점을 기준으로 한 World 좌표계로 설정 |
| └ Lazy Follow | 오프셋과 댐핑을 카메라의 Local 좌표계로 해석 |
| Position Damping | 카메라가 타겟을 부드럽게 따라오도록 지연 속도 설정 |
| Follow Offset | 카메라가 타겟으로부터 유지할 상대 위치 |
연출하고자 하는 장면이나 화면 상황에 따라 Binding Mode 를 적절하게 설정해야 할 것 같다.
경로를 따라 움직이는 카메라를 구현하기 위한 방식이다.
Unity - Cinemachine - Spline Dolly
일반적으로 Cinemachine Camera 에서 Spline Dolly 를 설정하기 보다는
Cinemachine Dolly Camera with Spline 를 통해 사용하지만,
Position Control 에서 적용할 수 있는 옵션이라 살펴보았다.
| Spline | Inspector |
|---|---|
![]() | ![]() |
Spline 을 생성하여 Cinemachine Spline Dolly 에 카메라가 움직일 경로를 생성해줘야 한다.
또한, Cinemachine Dolly Camera with Spline 를 생성하면,
컴포넌트에 Rotation Composer 이 부착되어 있고, Spline 오브젝트도 함께 생성된다.
| 항목 | 설명 |
|---|---|
| Spline | 카메라가 따라갈 경로. |
| Position | 경로상의 현재 위치를 어떤 방식으로 표현할지 결정 |
| └ Normalized | 0~1 사이의 비율로 표현 |
| └ Distance | 경로 거리 기준으로 표현 |
| └ Knot | 특정 노드(점) 기준으로 표현 |
| Spline Offset | 카메라를 Spline 자체에서 떨어지게 설정. X 는 수직, Y 는 위, Z 는 평행 |
| Camera Rotation | 카메라의 회전과 위쪽을 설정하는 방법 |
| └ Default | Cinemachine Brain 의 World Up Override 속성을 사용 |
| └ Spline | Spline의 방향을 따라 회전, Spline 의 위쪽 벡터와 접선 |
| └ Spline No Roll | Spline 의 위쪽 벡터와 접선을 사용하지만, 롤(Roll)은 제거 |
| └ Follow Target | 타겟의 Transform 에서 위쪽 벡터와 회전을 사용 |
| └ Follow Target No Roll | 타겟의 Transform 에서 위쪽 벡터와 회전을 사용하지만, 롤(Roll)은 제거 |
| Automatic Dolly | Spline 을 따라 자동으로 동작할지 설정 |
| └ None | 자동 이동 안 함 |
| └ Nearest Point to Target | Spline 에서 타겟에 가장 가까운 위치에 카메라를 배치 |
| └ Fixed Speed | 경로를 따라 고정된 속도로 이동 |
| └ Randomized Dolly Speed | 랜덤한 속도로 Dolly 이동 |
| Damping | 움직임을 부드럽게 만들기 위한 제어 |
| └ Position Damping (X,Y,Z) | 위치 이동 시 축별 감쇠값. 카메라가 경로를 따라 부드럽게 이동하도록 조절 |
| └ Angular Damping | 회전 감쇠값. 카메라 회전의 부드러움을 제어 값이 작을수록 더 빠르게, 클수록 더 무겁고 느리게 움직임. |
정해진 경로를 따라 카메라가 이동하기 때문에 컷씬 같은 장면 연출에 유용하게 쓰일 것 같다.
카메라의 위치를 타겟과 완전히 동일하게 유지하는 방식이다.
Unity - Cinemachine - Hard Lock To Target
카메라를 타겟의 위치에 고정시켜, 항상 같은 위치에서 움직이게 한다.
비교적 간단 명료한 컴포넌트가 추가된다.
Cinemachine Hard Lock To Target
| 항목 | 설명 |
|---|---|
| Damping | 위치가 목표 위치를 따라잡는 데 걸리는 시간 |
| Ex) | 0 : 동일하게 이동, 3 : 타겟의 3초 전 위치에 카메라가 존재 |
별도의 Position Control 을 설정하지 않는다면, 회전은 타겟과 독립적으로 설정된다.
TPS 시점 카메라 구현에 최적화되어 있는 방식이다.
Unity - Cinemachine - Third Person Follow
타겟을 중심으로 회전하고, 지정된 거리와 높이를 유지하며 따라가는 3인칭 시점 카메라이다.
타겟과 일정한 위치와 거리에 유치하여 대상의 움직임과 회전을 추적하고,
적절한 Shoulder Offset 을 적용해 카메라가 캐리거의 어깨 너머를 바라보는 3인칭으로 구현할 수도 있다.
속성 값을 조절하여 1인칭 카메라로 사용할 수도 있다.
Cinemachine Third Person Follow 프로퍼티
| 항목 | 설명 |
|---|---|
| Damping | 카메라기 대상을 추적하는 반응 속도 (각 축 X, Y, Z 마다 적용) 값이 작을수록 반응 속도가 빨라지고, 클수록 반응 속도가 느려짐. |
| Shoulder Offset | Tracking Target 기준, 카메라의 좌우/상하 오프셋 |
| Vertical Arm Length | Target에서 카메라까지 수직 거리 (높이 조절) |
| Camera Side | 카메라가 따라붙는 방향 설정 (왼쪽 어깨, 오른쪽 어깨 등) |
| Camera Distance | 카메라와 Target 간의 거리 |
| Avoid Obstacles | 카메라가 장애물을 피할지 여부 |
| └ Collision Filter | 카메라가 충돌을 피할 오브젝트 Layer 설정 |
| └ Ignore Tag | 충돌 감지에서 무시할 Tag 설정, Ex) Player |
| └ Camera Radius | 카메라 충돌 감지 반경 |
| └ Damping Into Collision | 오클루전(가림)을 보정하기 위해 카메라가 얼마나 빠르게 움직일지 설정 값이 클수록 카메라가 빠르게 이동 |
| └ Damping From Collision | 충돌 해결 시스템으로 보정된 후, 카메라가 정상 위치로 얼마나 빠르게 움직일지 설정 값이 클수록 카메라가 빠르게 이동 |
이름처럼 3인칭 액션 게임에 잘 활용할 수 있을 것 같다.
Third Person Follow 와 함께 사용되는 Third Person Aim 컴포넌트가 존재한다.
Unity - Cinemachine - Third Person Aim
이 Extension 을 사용하여 단순히 타겟을 바라보는 것이 아니라,
카메라가 플레이어 앞의 특정 거리(Aim Distance) 에 가상의 조준 지점을 만들고
그 지점을 바라보며 회전하는 방식으로 작동되게 해준다.
| Targeted Camera - TPS | Inspector |
|---|---|
![]() | ![]() |
| 프로퍼티 | 설명 |
|---|---|
| Aim Collision Filter | 카메라 조준 시 충돌 감지를 수행할 레이어 마스크 설정 카메라 시점이 해당 레이어를 가진 객체와 겹치지 않도록 카메라 위치를 조정. |
| Ignore Tag | 충돌 감지 시 무시할 태그를 지정합니다. Ex) Player |
| Aim Distance | 조준 대상까지의 거리를 정의 너무 가까우면 자연스럽지 않고, 너무 멀면 정확하지 않을 수 있다. |
| Noise Cancellation | 카메라의 조준 떨림을 줄여주는 기능. 보통 카메라 흔들림이나 입력에 의해 발생하는 미세한 떨림을 보정하여 보다 정확하고 안정된 조준 시점을 제공. |
카메라가 타겟을 중심으로 공전(Orbital)하듯 회전하면서 따라가는(Follow) 방식이다.
Unity - Cinemachine - Orbital Follow
시네머신 Input Axis Controller behaviour 등을 통해 플레이어 입력에 따라
타겟을 기준으로 카메라의 위치를 동적으로 제어할 수 있다.
Cinemachine Orbital Follow 일반 프로퍼티
| 항목 | 설명 |
|---|---|
| Binding Mode | 타겟으로부터 Offset 을 해석할 때 사용할 좌표계를 설정 |
| └ World Space | World 좌표계를 기준 |
| └ Lazy Follow | 카메라 Local 좌표계를 기준 |
| └ Lock to Target | 타겟의 Local 좌표계를 기준, 카메라가 대상과 함께 회전 |
| └ Lock to Target On Assign | 카메라가 활성화될 때, 타겟의 Local 좌표계를 기준으로 기준, 카메라는 대상과 함께 회전하지 않음 |
| └ Lock to Target No Roll | 타겟의 Local 좌표계를 기준, 롤(Roll) 은 0 으로 설정 |
| └ Lock to Target With World Up | 타겟의 Local 좌표계를 기준, 틸트(Tilt) 와 롤(Roll) 을 0 으로 설정 |
| Position Damping | 카메라가 얼마나 민감하게 반응하는지 설정 값이 작을수록 반응 속도가 빠르고, 값이 클수록 반응 속도가 느려짐 |
| Target Offset | 타겟으로부터의 기본 오프셋 |
| Orbital Style | orbit 이 생성되는 방식 |
| └ Sphere | 카메라는 대상을 둘러싼 구 형태 어느 지점에든 위치 |
| └└ Radius | 구의 반지름 |
| └ Three Ring | 카메라는 대상을 중심으로 3개의 원형 궤도 안에 위치 |
| └└ Top/Center/Bottom | 3개의 원형 궤도의 높이와 반지름 |
| └└ Spline Curvature | 3개의 원형 궤도를 연결하는 선의 팽팽함을 정의 |
| Recentering Target | 카메라 축의 재중심화 기준 |
| └ Axis Target | 정적 참조, 동적으로 업데이트되지 않음 |
| └ Parent Target | 부모 객체의 앞쪽 뒤에 오도록 동적으로 조정 |
| └ Tracking Target | 타겟의 앞쪽 뒤에 오도록 동적으로 조정 |
| └ Look At Target | 주시 타겟의 앞쪽 뒤에 오도록 동적으로 조정 |
Cinemachine Orbital Follow 축별 프로퍼티 (Horizontal, Vertical, Radial Axis)
| 항목 | 설명 |
|---|---|
| Value | 현재 카메라 축의 값 |
| Center | 축의 중심값 (중립 위치) |
| Range | 축의 유효 범위 |
| Recentering.Wait Time | 사용자가 입력을 멈춘 뒤 재중심화를 시작하기까지의 시간 |
| Recentering.Time | 재중심화가 완료되기까지 걸리는 시간 |
그렇다면 유저의 입력(터치나 마우스 회전) 을 어떻게 입력받아야 할까?
-> Add Input Controller 를 통해 필요한 컴포넌트를 추가해주자.
이 컴포넌트를 사용하여 싱글 플레이어 환경에서 마우스와 키보드 / 컨트롤러를 사용하여
쉽게 Cinemachine Camera 를 제어할 수 있다고 한다.
Unity - Cinemachine Input Axis Controller
Cinemachine Input Axis Controller 프로퍼티
| 항목 | 설명 |
|---|---|
| Scan Recursively | 자식 오브젝트까지 포함해 입력 액션을 자동으로 검색 |
| Suppress Input While Blending | 카메라 전환(블렌딩) 중에는 입력을 무시 자연스러운 전환을 위해 사용 |
| Ignore Time Scale | Time.timeScale에 관계없이 입력을 받을지 여부 |
| Player Index | 멀티플레이어 환경에서 특정 플레이어의 입력을 지정 |
| Auto Enable Inputs | 활성화 시 자동으로 Input System과 연결 |
Cinemachine Input Axis Controller Driven Axes 프로퍼티
| 축 종류 | 설명 |
|---|---|
| Look Orbit X | 마우스나 스틱의 좌우 움직임 (Yaw, 좌우 회전) |
| Look Orbit Y | 마우스나 스틱의 상하 움직임 (Pitch, 상하 회전) |
| Orbit Scale | 줌인/줌아웃과 같은 축의 스케일 (거리 조절 등) |
| 항목 | 설명 |
|---|---|
| Enabled | 해당 축의 입력을 사용할지 여부 |
| Input Action | 연결된 Input System 의 액션 |
| Gain | 입력 값에 곱해지는 민감도 계수 (Input Action 사용 시 적용) |
| Legacy Input | 구 Input Manager에서 사용되는 축 이름 (예: "Mouse X") |
| Legacy Gain | 구 Input Manager 용 민감도 계수 |
| Cancel Delta Time | 입력 축에서 수행되는 기본 deltaTime 보정을 취소하는 설정 ( deltaTime 곱하기를 생략하여 프레임에 무관하게 일정한 회전 속도 유지) |
| Input Value | 현재 축의 입력 값 (디버깅 용도) |
| Accel Time | 입력값이 변화할 때 가속에 걸리는 시간 |
| Decel Time | 입력이 멈췄을 때 감속에 걸리는 시간 |
타겟을 중심으로 일정한 스크린 비율을 유지할 때 주로 사용되는 방식이다.
Unity - Cinemachine - Position Composer
타겟을 화면의 고정된 영역(중앙, 좌측, 상단 등)에 배치하고,
그에 따라 카메라가 자동으로 움직이게 한다.
Cinemachine Position Composer 프로퍼티
| 속성 | 설명 |
|---|---|
| Camera Distance | 카메라와 타겟 사이의 거리 설정 |
| Dead Zone Depth | 카메라 Z축(깊이 방향) 상에서 타겟이 이 영역을 벗어나야만 카메라가 이동 |
| Screen Position | 타겟이 화면 내에서 위치할 비율 Ex) (0.5, 0.5)는 화면 정중앙, (0.3, 0.7)은 왼쪽 하단 |
| Dead Zone | 타겟이 이 영역 내에서 움직일 경우, 카메라는 움직이지 않음 |
| Hard Limits | 타겟이 지정된 화면 영역을 넘지 않도록 강제로 제한 |
| Center on Activate | 카메라가 활성화될 때, 타겟을 자동으로 화면 중심으로 |
| Target Offset | 타겟 위치에 대해 오프셋 |
| Damping | 타겟을 따라갈 때 얼마나 부드럽게 움직일지 |
| Lookahead | 타겟의 이동 방향을 예측해 카메라가 앞서 움직이도록 |
타겟을 정중앙에 위치시킨 2D 게임이나
앞서 예시로 설명한 2.5D 게임 (리틀 나이트 메어) 등의 시점으로 화면을 연출할 수 있다.