상세 컨텐츠

본문 제목

유니티 시네머신 가상카메라

유니티/기능

by MJ_119 2024. 7. 9. 17:43

본문

참고영상 : https://www.youtube.com/watch?v=DXFrfh1oy3M

 

@ 카메라가 캐릭터 뒤에서 따라가기( 월드좌표 )

Follow, Look At에 캐릭터의 Transform을 넣고

1. Body의 transposer 선택
2. Binding Mode : World Space 선택 후 follow 오프셋 의 Y랑 Z의 값을 원하는 만큼 조절한다.

3. Aim도 transposer 선택 후 밑에 Tracked Object Offset을 조절해서 회전을 고정한다.

가상 카메라 설정

가상 카메라를 선택하고, Inspector에서 다음과 같이 설정합니다:

  1. Follow: 플레이어 캐릭터의 Transform을 드래그 앤 드롭하여 할당합니다.
  2. Look At: 플레이어 캐릭터의 Transform을 드래그 앤 드롭하여 할당합니다.

카메라 위치 고정

카메라가 항상 캐릭터의 뒤에서 따라오도록 하기 위해 Cinemachine Virtual Camera의 Body 컴포넌트를 설정합니다. 여기서는 Transposer를 사용합니다.

  1. CinemachineVirtualCamera 오브젝트를 선택합니다.
  2. Inspector에서 Body를 Transposer로 설정합니다.
  3. Binding Mode를 World Space로 설정합니다.
  4. Follow Offset 값을 설정하여 카메라가 캐릭터의 뒤에 위치하도록 합니다. 예를 들어, Follow Offset의 Z 값을 음수로 설정하여 캐릭터의 뒤에 카메라를 배치합니다.

회전 고정

카메라의 회전이 월드 좌표 기준으로 고정되도록 설정합니다.

  1. Aim을 Composer로 설정합니다.
  2. Tracked Object Offset의 Y 값을 조정하여 카메라가 캐릭터의 머리 높이에 맞춰 바라보도록 합니다.
  3. Dead Zone Width와 Dead Zone Height를 조정하여 카메라의 움직임을 제어할 수 있습니다. 이는 카메라가 캐릭터를 중심으로 유지하는 데 도움이 됩니다.

 

@ 가상 카메라 2개의 전환을 즉각적으로 바뀌게 하기, 부드럽게 바뀌게 하기

 

1. 가상 카메라 2개의 우선순위를 각각 정하고( 예를들어 카메라1 : 우선순위  10, 카메라2 : 우선순위  11)

2. 메인카메라의 시네머신 브레인에서 Default Blend 속성을 Cut으로 정한다. (즉각적인 화면 전환)

2-1. 메인카메라의 시네머신 브레인에서 Default Blend 속성을 Ease In Out에서 몇초만에 이동할지 조절한다. (부드러운 화면 전환)

3. 코드로 가상 카메라의 오브젝트를 비활성화 하거나, 우선순위를 바꾼다.

 

 

 

- 예시 코드

using UnityEngine;
using Cinemachine;

public class CameraSwitcher : MonoBehaviour
{
    public CinemachineVirtualCamera cam1;
    public CinemachineVirtualCamera cam2;

    private void Update()
    {
        // 우선순위 변경을 통해 카메라 전환
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            cam1.Priority = 12;
            cam2.Priority = 11;
        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            cam1.Priority = 11;
            cam2.Priority = 12;
        }

        // 카메라 활성화/비활성화로 전환
        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            cam1.gameObject.SetActive(false);
            cam2.gameObject.SetActive(true);
        }
        else if (Input.GetKeyDown(KeyCode.Alpha4))
        {
            cam1.gameObject.SetActive(true);
            cam2.gameObject.SetActive(false);
        }
    }
}

 

 

 

 

 

 

 

CinemachineVirtualCamera 인스펙터 속성

1. Name and Tag

  • Name: 가상 카메라의 이름입니다.
  • Tag: 게임 오브젝트 태그입니다.

2. Status

  • Status: 가상 카메라의 현재 상태를 표시합니다. 활성화 여부와 함께 현재 가상 카메라가 어떤 상태인지 보여줍니다.

3. Priority

  • Priority: 가상 카메라의 우선 순위를 결정합니다. 높은 우선 순위를 가진 카메라가 활성 카메라가 됩니다. 같은 우선 순위의 카메라가 여러 개 있을 경우, 가장 최근에 활성화된 카메라가 선택됩니다.

4. Standby Update

  • Standby Update: 가상 카메라가 비활성화 상태일 때 업데이트 방식을 설정합니다.
    • Always: 항상 업데이트합니다.
    • Never: 업데이트하지 않습니다.

5. Aim

  • Aim: 카메라가 피사체를 어떻게 조준하는지를 설정합니다.
    • Do Nothing: 카메라의 조준을 제어하지 않습니다.
    • Hard Look At: 특정 타겟을 강하게 바라봅니다.
    • Composer: 타겟을 프레임 안에 넣도록 카메라의 위치와 회전을 조절합니다.
    • Group Composer: 여러 타겟을 프레임 안에 넣도록 조절합니다.

6. Body

  • Body: 카메라의 위치와 이동 방식을 설정합니다.
    • Do Nothing: 카메라의 위치를 제어하지 않습니다.
    • Transposer: 카메라가 타겟을 따라가도록 설정합니다.
    • Framing Transposer: 타겟을 프레임 안에 유지하도록 조절합니다.
    • Orbital Transposer: 타겟 주위를 공전하는 방식으로 이동합니다.
    • Tracked Dolly: 레일 위에서 움직이는 카메라를 설정합니다.

7. Lens

  • Lens: 카메라 렌즈 속성을 설정합니다.
    • Field of View (FOV): 카메라의 시야각을 설정합니다. (퍼스펙티브 모드)
    • Orthographic Size: 카메라의 직교 크기를 설정합니다. (직교 모드)
    • Near Clip Plane: 렌즈의 근접 절단면을 설정합니다.
    • Far Clip Plane: 렌즈의 원거리 절단면을 설정합니다.
    • Dutch: 카메라의 기울기를 설정합니다.

8. Extensions

  • Extensions: 추가적인 기능을 제공하는 확장들을 설정합니다. 예를 들어, CinemachineCollider와 같은 확장을 추가하여 카메라 충돌 처리를 할 수 있습니다.

각 Aim 모드 상세 설명

1. Composer

  • Tracked Object Offset: 타겟 오브젝트로부터의 오프셋을 설정합니다.
  • Lookahead Time: 타겟의 움직임을 예측하는 시간입니다.
  • Lookahead Smoothing: 움직임 예측의 부드러움을 설정합니다.
  • Damping: 카메라 움직임의 감쇠를 설정합니다.
  • Screen X/Y: 화면에서 타겟의 위치를 설정합니다.
  • Dead Zone Width/Height: 타겟이 움직여도 카메라가 따라가지 않는 영역을 설정합니다.
  • Soft Zone Width/Height: 타겟이 움직이면 카메라가 천천히 따라가는 영역을 설정합니다.

2. Group Composer

  • Group Framing Size: 그룹의 크기에 따라 카메라가 어떻게 반응할지 설정합니다.
  • Framing Mode: 카메라가 그룹을 어떻게 프레임에 맞출지 설정합니다.
  • Adjustment Mode: 카메라가 그룹을 프레임에 맞추기 위해 조정하는 방식을 설정합니다.
  • Minimum FOV: 최소 시야각을 설정합니다.
  • Maximum FOV: 최대 시야각을 설정합니다.

각 Body 모드 상세 설명

1. Transposer

  • Binding Mode: 타겟과 카메라의 상대적 위치를 설정합니다.
  • Follow Offset: 타겟을 기준으로 카메라의 위치 오프셋을 설정합니다.
  • Damping: 카메라 움직임의 감쇠를 설정합니다.

2. Framing Transposer

  • Group Framing Size: 그룹의 크기에 따라 카메라가 어떻게 반응할지 설정합니다.
  • Damping: 카메라 움직임의 감쇠를 설정합니다.
  • Screen X/Y: 화면에서 타겟의 위치를 설정합니다.
  • Dead Zone Width/Height: 타겟이 움직여도 카메라가 따라가지 않는 영역을 설정합니다.
  • Soft Zone Width/Height: 타겟이 움직이면 카메라가 천천히 따라가는 영역을 설정합니다.

3. Orbital Transposer

  • Binding Mode: 타겟과 카메라의 상대적 위치를 설정합니다.
  • Follow Offset: 타겟을 기준으로 카메라의 위치 오프셋을 설정합니다.
  • X Axis: 카메라의 수평 회전을 설정합니다.
  • Y Axis: 카메라의 수직 회전을 설정합니다.
  • Z Axis: 카메라의 거리 조정을 설정합니다.
  • Damping: 카메라 움직임의 감쇠를 설정합니다.

4. Tracked Dolly

  • Path: 카메라가 따라갈 경로를 설정합니다.
  • Path Position: 경로에서의 위치를 설정합니다.
  • Position Units: 경로의 위치 단위를 설정합니다.
  • Camera Up: 카메라의 상단 방향을 설정합니다.
  • Auto Dolly: 타겟의 움직임에 따라 카메라가 자동으로 경로를 따라가도록 설정합니다.

확장(Extensions) 상세 설명

1. Cinemachine Collider

  • Avoid Obstacles: 카메라가 장애물을 피하도록 설정합니다.
  • Distance Limit: 카메라와 타겟 간의 최대 거리를 설정합니다.
  • Minimum Distance From Target: 타겟으로부터의 최소 거리를 설정합니다.
  • Damping: 충돌 회피 시의 감쇠를 설정합니다.

2. Cinemachine Confiner

  • Bounding Volume: 카메라가 벗어나지 않을 볼륨을 설정합니다.
  • Damping: 볼륨 경계에서의 감쇠를 설정합니다.

관련글 더보기