✍️ 개요
원신과 같은 RPG 장르 게임에서 캐릭터 시점을 어떻게 구현하면 좋을까요?
이전에 Cinemachine을 이용하여 3인칭 시점을 구현한 적이 있습니다.
이때는 Cinemachine Follow 제어 모듈을 사용했는데, 사실 한계가 있습니다.
그래서 오늘은 좀 더 복잡한 설정이 가능한 모듈을 통해 RPG 캐릭터 시점을 구현해보겠습니다.
[ 과거 포스팅한 3인칭 시점 구현 ]
[ 오늘의 작업물 미리모기 ]
📌 구현 방법
씬 하이러키 영역을 우클릭합니다.
[ Cinemachine ] - [ Targeted Camera ] - [ FreeLook Camera ] 을 선택합니다.
PlayerCameraRoot 오브젝트를 가상 카메라의 Tracking Target에 할당합니다.
그러면 이렇게 쉽게 구현이 가능합니다!
📌 Cinemachine Orbital Follow 분석
Cinemachine Orbital Follow : 카메라가 타겟을 중심으로 궤도를 따라 이동하는 제어 모듈
Cinemachine Follow와 유사하지만 동작 방식이 다릅니다.
Cinemachine Orbital Follow는 궤도를 기반으로 특정 각도와 거리를 유지할 수 있습니다.
또한, 사용자 정의 스크립트 또는 Animator을 통해 실시간으로 제어할 수 있습니다.
입력 컨트롤러(Cinemachine Input Axis Controller)와 함께 사용하여 조작이 가능하도록 합니다.
[ 주요 프로퍼티 ]
① Binding Mode : 카메라가 타겟을 향해 어떻게 움직일지 결정
② Position Damping : 카메라가 타겟을 따라가는 속도 벡터
③ Target Offset : 타겟 위치로부터 오프셋을 설정하여 카메라의 위치를 조정
④ Orbit Style - Three Ring : 세 개의 궤도로 분리하여 회전
- Top : 위쪽 궤도의 거리와 높이 설정
- Center : 중간 궤도의 거리와 높이 설정
- Bottom : 아래쪽 궤도의 거리와 높이 설정
- Spine Curvature : 카메라의 궤도 변형을 얼마나 Spine 곡선으로 표현할 것인지 결정 (0은 직선, 1은 완전한 곡선)
왼쪽 상단의 카메라 이동을 살펴보면 3개의 궤도를 따라 움직입니다.
⑤ Orbit Style - Sphere : 구형 궤도로 둘러싸며 회전
- Radius : 타겟과 카메라 간의 거리
왼쪽 상단의 카메라 이동을 살펴보면 2개의 궤도(구)를 따라 움직입니다.
⑥ Recentering Target : 수평을 다시 맞추기 위한 참조 프레임 정의
- 선택된 타겟 뒤로 축 중심이 동적으로 수정됩니다.
⑦ Horizontal Axis : 카메라의 수평 축(좌우 회전)을 제어
- Value : 현재 수평 축 값
- Center : 기본 중심 값
- Range : 회전 가능 범위
- Recentering : 일정 시간이 지나면 중심(Center)으로 돌아갈지에 대한 여부
⑧ Vertical Axis : 카메라의 수직 축(상하 회전)을 제어
- Value : 현재 수직 축 값
- Center : 기본 중심 값
- Range : 회전 가능 범위
- Recentering : 일정 시간이 지나면 중심(Center)으로 돌아갈지에 대한 여부
⑨ Radial Axis : 카메라와 타겟 사이 거리를 제어
- Value : 현재 거리 값
- Center : 기본 거리
- Range : 거리의 최소 ~ 최대 값
- Recentering : 일정 시간이 지나면 중심(Center)으로 돌아갈지에 대한 여부
[ Recentering 적용 ]
Wait 프로퍼티(1초)가 지나면 Time 프로퍼티(2초)간 Center로 돌아가는 모습입니다.
[ Wrap 체크 ]
Wrap을 체크하면 Range의 끝 지점을 벗어나면 처음 지점으로 돌아옵니다.
그래서 수평 회전은 0 ~ 180 범위에서 Wrap을 선택했기 때문에 화면이 순간이동합니다.
하지만 수직 회전은 -10 ~ 45 범위에서 Wrap을 해제했기 때문에 화면이 끝 지점에서 멈춥니다.
📝 정리
오늘은 RPG 장르의 캐릭터 시점을 구현해봤습니다.
Cinemachine Orbital Follow 제어 모듈을 통해 복잡한 3인칭 시점을 구현할 수 있음을 알았습니다.
또한, Cinemachine Orbital Follow의 프로퍼티 역할과 기능에 대해 살펴봤습니다.
'유니티(Unity) > 패키지: Cinemachine 정리' 카테고리의 다른 글
[Cinemachine] 카메라와 오브젝트 충돌 (0) | 2024.12.04 |
---|---|
[Cinemachine] 타겟 기반 시점 구현 (0) | 2024.12.03 |
[Cinemachine] 2.5D 구현 (3D 환경에서 2D 구현) (1) | 2024.12.02 |
[Cinemachine] 3인칭 시점 구현 (1) | 2024.12.01 |
[Cinemachine] 시네머신 동작 원리 (2) | 2024.11.30 |