✍️ 개요
위 이미지는 3D 환경에서 카메라를 사이드에 배치하여 2.5D 뷰를 구현한 게임의 인게임 이미지 입니다.
2.5D를 구현하기 위해서 여러분이 직접 카메라 스크립트를 작성하셔도 됩니다.
하지만 시네머신(Cinemachine)을 활용한다면 코드 없이 구현할 수 있습니다.
심지어 충돌 및 범위 설정 등 조건을 추가할 수도 있습니다!
[ 오늘의 작업물 미리보기 ]
📌 구현 방법
먼저 씬에 빈 오브젝트를 생성하세요.
[ 씬 하이러키 우클릭 ] - [ Create Empty ] 클릭
빈 오브젝트 이름은 CameraBundles 라고 명명하겠습니다.
앞으로 여기에 다양한 가상 카메라를 배치하여 기능을 구현하도록 하겠습니다.
이제 CameraBundles 오브젝트를 우클릭하여 가상 카메라를 생성하겠습니다.
[ Cinemachine ] - [ Targeted Camera ] - [ 2D Camera ] 클릭
먼저 가상 카메라를 세팅하도록 하겠습니다.
① 생성한 가상 카메라의 이름을 [ 2DCamera ] 라고 명명한 후 CameraBundles 오브젝트의 자식으로 배치합니다.
② 2DCamera 오브젝트를 선택하여 Tracking Target 을 PlayerCameraRoot 로 설정합니다.
이러면 2.5D 구현이 끝납니다! 이제 Play 버튼을 눌러 확인해보세요.
📌 Cinemachine Position Composer 분석
Cinemachine Position Composer : 타겟을 중심으로 카메라의 위치를 제어하는 모듈입니다.
주로 타겟이 움직일 때마다 카메라의 위치를 제어할 때 사용합니다.
프로퍼티를 통해 화면의 특정 영역을 유지하거나, 제한하는 기능을 추가할 수 있습니다.
[ 주요 프로퍼티 ]
① Camera Distance
- 카메라와 타겟 간의 거리를 설정하는 값
② Dead Zone Depth
- 카메라와 타겟 간의 거리에 따라 카메라를 Z축으로 움직이지 않도록 정하는 임계치
- 0이라면 Z축 거리에 상관없이 항상 따라감
- N이라면 Z축 거리가 N 이상이 되어야 따라감
위 영상을 보시면 Dead Zone Depth 값만큼 거리가 떨어져야 Z축으로 이동하는 것을 볼 수 있습니다.
③ Screen Position
- 카메라가 타겟을 화면 내에서 어디에 배치할지 설정하는 값
- (0, 0) 은 화면 중앙을 의미
④ Dead Zone
- 타겟이 이동해도 카메라가 움직이니 않는 영역을 의미
Dead Zone을 통해 카메라를 좀 더 유연하게 제어할 수 있습니다.
⑤ Hard Limits
- 카메라가 타겟을 놓치지 않게 하기 위한 영역
- 타겟이 해당 영역 밖으로 나가지 않도록 제어
위 영상을 보면 타겟이 아무리 빨라도 Hard Limits 영역을 벗어나지 않음을 확인할 수 있습니다.
⑥ Center On Activate
- 카메라가 활성화될 때 타겟을 즉시 화면 중심에 배치할 지에 대한 여부
⑦ Target Offset
- 타겟으로부터의 X, Y, Z 상대적 거리
- 타겟의 위치를 기준으로 카메라 위치 조정
⑧ Damping
- 카메라가 타겟을 따라갈 때 움직임의 부드러움 설정
- X, Y, Z 축에 따라 설정 가능
⑨ Lookahead
- 타겟의 움직임을 예측하여 카메라가 타겟을 먼저 따라가도록 할지에 대한 여부
- 타겟이 매우 빠르게 움직이는 경우에 유용
위 영상을 보면 노란색 점이 Dead Zone 외곽이 아닌, 내부에서 천천히 이동하는 것을 볼 수 있습니다.
카메라가 타겟의 움직임을 예측하며 미리 이동했기 때문입니다.
가상 카메라의 Rotation 값을 변경하여 쿼터뷰 느낌으로도 구현도 가능합니다.
📝 정리
오늘은 시네머신(Cinemachine) 패키지를 활용하여 2.5D을 구현해봤습니다.
Cinemachine의 2D Camera 으로 구현할 수 있으며, 2D Camera 은 Cinemachine Position Composer
제어 모듈을 사용함을 알았습니다. 또한, 이 모듈의 프로퍼티가 어떤 역할을 하고 언제 사용하는 지 살펴봤습니다.
'유니티(Unity) > 패키지: Cinemachine 정리' 카테고리의 다른 글
[Cinemachine] 카메라와 오브젝트 충돌 (0) | 2024.12.04 |
---|---|
[Cinemachine] 타겟 기반 시점 구현 (0) | 2024.12.03 |
[Cinemachine] 3인칭 시점 구현 (1) | 2024.12.01 |
[Cinemachine] 시네머신 동작 원리 (2) | 2024.11.30 |
[Cinemachine] 패키지 설치 및 준비 (Unity 6) (0) | 2024.11.28 |