시네머신(Cinemachine)
시네머신은 카메라의 움직임을 손쉽게 제어하는 유니티 공식 패키지로 카메라 연출에 필요한 코드와 조정 작업 대부분을 대체할 수 있습니다. 시네머신을 사용하면 레이싱, 어드벤처, TPS 등 장르마다 고유한 카메라 동작을 별다른 스크립트 작성없이 구현할 수 있습니다. 게임 플레이뿐만 아니라 게임 컷신에서도 많은 부분을 자동화할 수 있습니다.
시네머신의 컴포넌트들은 카메라 초점, 화면상의 피사체 배치, 추적의 지연시간이나 카메라 흔들림, 여러 카메라 사이에서의 전환 등 카메라 연출과 관련된 다양한 수치를 제공합니다. 이 값들을 연출 의도에 맞춰 변경하고 카메라가 추적할 대상만 지정하면 시네머신 카메라가 알아서 목표물을 화면에 담아냅니다.
시네머신의 원리
시네머신이 제공하는 카메라는 크게 브레인 카메라, 가상 카메라 두가지로 나뉩니다.
시네머신으로 카메라 추적을 구현하려면 먼저 브레인 카메라를 만들어야 합니다. 브레인 카메라는 게임 월드를 촬영하는 '진짜' 카메라이며 씬에 하나만 존재합니다.
가상 카메라는 브레인 카메라의 '분신' 역할로 브레인 카메라를 위한 여러 설정값을 제공하게 되며 씬에 여러 개 존재할 수 있습니다. 브레인 카메라는 여러 가상 카메라 중 하나를 골라 현재 활성화된 카메라로 사용하게 되며 한 번에 하나의 가상 카메라만 현재 활성화된 카메라로 사용 가능합니다.
시네머신 카메라는 대상을 주시하는 동안 카메라 연출이 자연스럽게 느껴지도록 지연시간을 두고 카메라를 부드럽게 회전합니다. 데드존, 소프트존, 하드리밋은 주시하는 물체가 게임 화면 밖으로 벗어나지 않게 추적의 세기를 단계별로 설정합니다.
카메라가 주시하는 물체가 화면의 데드존에 있는 동안에는 카메라가 회전하지 않으며, 소프트존에 있다면 화면의 조준점에 오도록 카메라가 부드럽게 회전합니다. 만약 물체가 너무 빠르게 움직여 소프트존을 벗어나 하드 리밋에 도달하려 한다면 카메라가 격하게 회전합니다.
데드존과 소프트존의 크기를 줄이면 물체가 조금이라도 화면 중앙을 벗어나려 할 때 지연시간없이 카메라가 즉시 물체를 향해 회전하게 됩니다. 하지만 화면의 움직임이 딱딱하게 느껴질 수 있습니다. 반대로 크기를 늘리면 물체를 쪼는 화면의 움직임이 느리게 느껴질 수 있습니다.
<참고>
레트로의 유니티 게임 프로그래밍 에센스
'Unity' 카테고리의 다른 글
(Unity) 코루틴, Couroutine (0) | 2022.10.12 |
---|---|
(Unity) C# 인터페이스(interface) (0) | 2022.10.11 |
(Unity) 오브젝트 풀링 (효율적인 오브젝트 반복 생성) (0) | 2022.08.30 |
(Unity) 벡터 연산으로 평행이동 구현하기, transform (0) | 2022.08.26 |
(Unity) 유니티에서의 벡터 활용 (0) | 2022.08.21 |