Quick Reference
Cinemachine 3.1.7 기준입니다. 구도는 하나의 damping 값으로 만들지 않습니다. Position Control은 카메라가 어디에 머무는지, Rotation Control은 대상이 화면 어디에 보이는지, Lens는 얼마나 넓게 보는지를 각각 정합니다.
| 원하는 결과 | 먼저 조정할 곳 | 값이 커졌을 때의 일반적 결과 |
|---|---|---|
| 대상 뒤·옆의 고정 거리 | CinemachineFollow 또는 ThirdPersonFollow의 Follow Offset | offset 방향·거리가 더 커짐 |
| target에 늦게 따라가는 느낌 | Position Control의 X/Y/Z Damping | 해당 축의 반응이 더 느리고 부드러워짐 |
| target을 화면 중앙 밖에 두기 | CinemachineRotationComposer의 Screen Position | 시선 기준 화면 위치가 이동 |
| 작은 움직임은 화면을 고정 | Rotation Composer의 Dead Zone | zone 안에서는 회전 보정이 줄어듦 |
| 전투·넓은 공간의 시야 | Lens > Field of View 또는 Orthographic Size | 더 넓은 영역을 보되 대상은 작아짐 |
Body·Aim은 Cinemachine 2.x에서 자주 쓰던 명칭입니다. 3.1 Inspector에서는 각각 Position Control, Rotation Control을 먼저 찾습니다.
위치와 시선 설정
Position Control
CinemachineFollow는 Follow target을 일정한 offset에서 따라가는 기본 모듈입니다. Follow Offset은 target의 local 축 기준 카메라 위치입니다. offset을 바꾸면 구도의 거리·높이·측면이 바뀌지만, target의 pivot이 발 아래인지 몸통인지에 따라 같은 값도 전혀 다르게 보입니다.
CinemachineThirdPersonFollow는 어깨 너머 거리와 충돌 처리 구성을 염두에 둔 3인칭용 선택지입니다. CinemachineOrbitalFollow는 축 회전과 orbit 기반 구도에, CinemachinePositionComposer는 target을 기준으로 위치를 구성하는 장면에 맞습니다. 모듈을 겹쳐 붙여 같은 위치를 두 곳에서 보정하지 않습니다.
Position damping은 target의 각 축 변화에 대한 지연 시간 성격의 보정입니다. 큰 값이 "더 좋은 부드러움"은 아닙니다. 빠른 방향 전환에서 플레이어가 화면 가장자리에 오래 남으면 조작 반응이 무겁고, 너무 작으면 target의 미세한 흔들림까지 화면에 전달됩니다. 직선 이동, 급회전, 낙하, 좁은 공간을 같은 입력으로 재생해 비교합니다.
Rotation Control
CinemachineRotationComposer는 Look At target을 화면 안에 배치하도록 Camera 회전을 보정합니다. Screen Position은 대상이 머물 기준점이고, Dead Zone은 target이 그 범위 안에서 움직일 때 Camera를 돌리지 않는 영역입니다. Soft Zone은 Dead Zone 밖에서 화면 끝으로 가기 전까지 점진적으로 보정하는 영역입니다.
Dead Zone을 과도하게 키우면 적이 화면 가장자리로 가도 Camera가 늦게 반응해 시야를 잃습니다. 반대로 0에 가깝게 두면 target의 작은 흔들림도 화면 회전으로 보일 수 있습니다. 먼저 게임에서 대상이 반드시 보여야 하는 범위를 정하고, 그 안에서 Dead Zone과 damping을 조절합니다.
| 항목 | 언제 바꾸는가 | 잘못 설정하면 |
|---|---|---|
Look At / Tracking Target | 무엇을 화면 구도의 기준으로 둘지 바꿀 때 | 이동 target과 시선 target이 달라 의도하지 않은 프레이밍 |
Screen Position | 대사 상대를 옆에 남기거나 진행 방향 여백을 둘 때 | HUD·조준점과 대상이 겹치거나 한쪽이 잘림 |
Dead Zone | 미세 흔들림을 Camera 움직임으로 만들지 않을 때 | 너무 크면 반응 지연, 너무 작으면 화면 떨림 |
Soft Zone | Dead Zone 바깥의 보정 시작 구간을 완화할 때 | 경계에서 급격히 회전하거나 target이 화면 밖으로 나감 |
| Rotation Damping | Camera 회전의 추종 속도를 장면 속도에 맞출 때 | 빠른 조작에 뒤처지거나 매 프레임 흔들림을 증폭 |
Lens와 장애물 경계
Lens의 Field of View는 perspective Camera의 시야각이고, Orthographic Camera에서는 Orthographic Size가 화면 높이를 정합니다. Follow offset을 늘려 대상을 작게 보이게 할지, FOV를 넓혀 주변을 더 보여 줄지는 같은 결과가 아닙니다. FOV 변화는 원근감도 바꾸므로, 탐색 카메라의 거리 조정과 공포·속도 연출의 FOV 변화는 의도를 분리합니다.
벽 뒤로 Camera가 들어가는 문제는 Composer나 FOV만으로 해결하지 않습니다. Camera와 장애물 사이의 충돌·가림 처리는 선택한 Position Control 및 Cinemachine의 충돌/Deocclusion 확장 설정이 담당합니다. target과 Camera를 막는 layer를 명시하고, 플레이어 자신의 collider와 trigger를 포함할지 별도 확인합니다. 레이어가 빠지면 벽을 통과하고, 너무 넓으면 장식 collider에도 Camera가 계속 밀려납니다.
튜닝 순서와 점검
- target pivot과 Camera target을 확정하고, Position Control 하나와 Rotation Control 하나를 고릅니다.
- Lens와 Follow Offset으로 기본 거리·화면 여백을 맞춥니다.
Dead Zone으로 움직이지 않아도 되는 화면 범위를 먼저 정합니다.- Position·Rotation damping을 직선 이동, 급회전, 장애물 근처, 전투 재생에서 각각 확인합니다.
- 마지막에 충돌/가림 layer와 blend 전환 중 구도가 깨지지 않는지 확인합니다.
다음처럼 target만 바꾸는 코드는 구도 모듈의 설정을 유지하면서 관찰 대상만 교체할 때 적합합니다.
using Unity.Cinemachine;
using UnityEngine;
public sealed class LockOnCamera : MonoBehaviour
{
[SerializeField] private CinemachineCamera gameplayCamera;
public void SetLookTarget(Transform target)
{
gameplayCamera.LookAt = target;
}
}Follow와 Look At을 같은 Transform으로 묶는 것이 기본 구도에 편하지만, 보스전처럼 몸통을 따라가며 머리나 약점을 바라봐야 할 때는 의도적으로 분리할 수 있습니다. 이때는 두 target의 움직임 차이도 damping에 들어가므로, 변경 후 빠른 회전과 전환 blend를 다시 봅니다.
자주 틀리는 부분
| 증상 | 원인 | 확인 |
|---|---|---|
| damping을 줄여도 Camera가 무거움 | input smoothing, target 이동 smoothing, Rotation damping이 함께 남음 | 입력·target·Position·Rotation의 지연을 한 단계씩 분리 |
| 대상이 화면 중앙에서 계속 흔들림 | Dead Zone이 없고 target pivot/Animator 흔들림을 모두 추적 | pivot과 Dead Zone을 확인하고 미세 흔들림의 소유자 제거 |
| 벽에서 Camera가 튀거나 통과 | 충돌 모듈/extension 미설정 또는 layer mask 오류 | 장애물 layer, trigger 처리, target self-collider를 분리 검증 |
| FOV를 넓혔더니 조작감이 달라짐 | FOV는 거리뿐 아니라 원근감도 변경 | 거리 조정과 FOV 연출을 별도 선택으로 비교 |
| 2.x 튜토리얼대로 Body/Aim을 찾음 | 3.1 Inspector 명칭 변경 | Position Control/Rotation Control과 사용하는 모듈 이름으로 대응 |
참고 링크
3 sources