시네머신은 영화 촬영을 하는 것처럼 씬을 촬영하여 게임 화면상에 비추어주는 유니티 패키지라고 생각하면 됩니다.
에셋 스토어 혹은 패키지 매니저에서 Cinemachine이라고 검색하면 찾을 수 있다.
시네머신은 기본적으로 유니티상의 카메라 오브젝트를 생성하지 않고 가상 카메라를 이용한다.
가상 카메라는 유니티상에 생성된 카메라를 오브젝트를 이용하여 다양한 각도에서 비추어줄 게임상의 씬을 보여주도록 도와준다. 또한 가상 카메라는 각각 서로에게 영향을 끼치지 않으며, 유니티 카메라에도 영향을 받지 않기 때문에 자유로운 카메라 구성이 가능하다.
그러므로, 가상 카메라로 할 수 있는 기능은 다음과 같다.
가상 카메라는 유니티 카메라보다 소모하는 프로세스 등이 적으므로, 더욱 유용하게 활용할 수 있다.
시네머신에는 Virtual Camera (가상 카메라), FreeLook Camera, Blend List Camera, State-Driven Camera, ClearShot Camera, Dolly Camera, Target Group Camera, Mixing Camera, 2D Camera 가 있는데, 각각 활용도에 따라 다르게 사용할 수 있다.
씬 안에 있는 시네머신의 모든 가상 카메라를 모니터링하는 오브젝트. 유니티 카메라에 붙여서 사용한다.
시네머신 브레인은 실질적으로 게임 화면상에 비추어줄 가상 카메라가 무엇인가를 설정하는데, 이때 가장 먼저 엑티브 되거나 우선순위가 있는 가상 카메라를 비추어준다.
가장 기본이 되는 카메라로, 유니티 카메라를 조정하듯 자유롭게 활용이 가능하다.
오브젝트를 중심으로 원형의 링을 생성하여 그 구간 안에서 타깃을 관찰하는 카메라.
할당된 버추얼 카메라들을 정해진 블랜드 방식에 따라 순차적으로 전환하는 카메라.
타겟 에니메이션의 상태별로 활성화/비활성화 시킬 수 있는 카메라.
플레이어의 충돌/트리거 상태에 따라 활성화/비활성화 시킬 수 있는 카메라.
트랙을 깔고 그 트랙을 따라 움직이는 카메라. Dolly Track 과 함께 쓰인다.
그룹으로 묶인 카메라들을 자동으로 계산해 한 화면에 보여주는 카메라.
Child Camera Weight 값에 따라 활성화/비활성화 해주는 카메라.
직교 뷰로 사용되는 카메라.
가장 기본이 되는 Virtuam Camera (가상 카메라)를 기준으로 설명하며, 이외에는 깊게 활용해보지 않았으므로 간단한 설명만 남긴다.
위의 설명만 알아도 어느정도 시네머신 활용이 가능하다.
가상 카메라와 같은 것들은 그냥 컴포넌트로 가져올 수 있지만 컴포넌트 내부의 하위값 (예를 들어, Lens 안의 Field Of View 값 등...) 으로 접근하려면 컴포넌트에서 또 다시 컴포넌트를 가지고 와서 변경해야 한다.
using Cinemachine; //시네머신을 using 해줘야 활용이 시네머신을 스크립트로 가져올 수 있다.
public CinemachineVirtualCamera cinevirtual;
main()
{
// 시네머신 자체에 접근하려면 이렇게 해도 된다.
cinevirtual.m_Lens.FieldOfView = 60;
// 하지만 transposer 의 follow offset에 접근하려면 아래와 같이 컴포넌트를 가져오는
// 방식으로 가져와야 한다.
cinevirtual.GetCinemachineComponent<CinemachineTransposer>().m_FollowOffset.y = 10;
}
시네머신을 더이상 참조하고 싶지 않을때나 우선순위를 낮추고 싶다면 시네머신 브레인에서 설정을 하던가 아니면 스크립트상에서 enabled = false;
으로 사용하지 않으면 됩니다.