Search Unity

오랜 시간을 들여 2D 게임을 위한 카메라 시스템을 구축하면서 2D 콘텐츠를 위한 시네머신이 있었으면 좋겠다고 생각하셨나요? 아직 많은 분들이 모르고 계시겠지만, 2D 콘텐츠 제작에도 시네머신을 사용할 수 있습니다! 이번 게시물에서는 2D 게임 개발에 시네머신을 최대한 활용하여 작업 능률을 개선하고 개발 기간을 단축하는 방법을 소개합니다. 시네머신 가상 카메라(Virtual Camera)와 제한자(Confiner) 등 2D 게임 개발을 위한 툴에 대해 자세히 알아보세요.

시네머신 임포트하기

Unity 2018.1.0b7 이상 버전을 사용하는 경우 Unity 내 패키지 관리자에서 시네머신을 임포트할 수 있습니다.

창(Window) > 패키지 관리자(Package Manager) > 모두(All)로 이동한 다음 시네머신(Cinemachine)을 선택합니다.

 

 

패키지 관리자에서 임포트

2D용 카메라 만들기

시네머신을 사용하면 2D 환경을 위한 카메라 시스템을 비교적 쉽게 구축할 수 있습니다. 먼저 2D용 가상 카메라를 만드는 방법을 살펴보겠습니다.

  1. 메뉴에서 시네머신(Cinemachine) > 2D 카메라 생성(Create 2D Camera)을 선택하여 2D 가상 카메라를 만듭니다. 그러면 2D 환경용으로 설정된 가상 카메라가 생성됩니다. 씬에서 처음으로 가상 카메라를 만든 경우 메인 카메라에 Cinemachine Brain 컴포넌트도 추가됩니다.
  2. 계층 구조(Hierarchy) 창에서 플레이어를 드래그하여 추적(Follow) 타겟으로 추가합니다.
  3. 목표 고정(Look At) 타겟으로는 아무것도 추가하지 않습니다. 목표 고정(Look At) 타겟에 항목이 있으면 해당 항목을 선택한 다음 Backspace 또는 Delete 키를 눌러 삭제합니다.
  4. 필요에 따라 직교 크기와 바디 설정을 조정합니다.

2D 가상 카메라가 3D 가상 카메라와 가장 구별되는 점은 프레이밍 트랜스포저(Framing Transposer)가 사용된다는 것입니다. 이 트랜스포저는 카메라의 X-Y 평면에서 타겟을 추적하며, 카메라가 회전하지 않도록 합니다. 프레이밍 트랜스포저가 올바르게 작동하려면 가상 카메라의 ‘목표 고정(Look At)’ 타겟이 비어 있어야 합니다. 또한 2D 게임에서는 직교 뷰가 사용됩니다. 처음에 가상 카메라를 만들 때에는 씬의 시네머신 브레인(Cinemachine Brain) 카메라에서 투영을 ‘직교(Orthographic)’로 변경해야 합니다.

 

 

시네머신을 이용하는 경우 카메라를 하나만 사용하지 말고 여러 대의 ‘가상 카메라’를 씬에 배치한 다음 시네머신 브레인을 통해 각 카메라의 뷰를 적절하게 섞어서 활용합니다. 플레이어의 생명이 얼마 남지 않았거나, 플레이어가 특정 영역에 진입했을 때, 또는 카메라 프레이밍이나 포스트 프로세싱을 변경해야 하는 경우 이러한 방식을 활용할 수 있습니다. 원하는 시각 표현에 따라 시네머신 브레인의 혼합 설정을 조정할 수도 있습니다.

아래의 비디오에서 재생 모드 중 가상 카메라를 조정하는 방법을 알아보세요.

팁: 재생 모드에서 카메라 설정을 변경할 수 있으며, 가상 카메라의 ‘재생 중 저장(Save During Play)’ 옵션이 선택된 상태이면 변경한 설정이 저장됩니다.

카메라 제한하기

시네머신의 또 다른 멋진 기능은 경계 상자를 사용하여 가상 카메라의 움직임을 원하는 영역 내로 제한하는 것으로, 가상 카메라의 확장 기능(Extension) 섹션에서 설정할 수 있습니다. 아래는 이 효과를 적용하는 방법입니다.

  1. 다음과 같이 해당 레벨에 경계 상자를 설정합니다. 이 경계 상자는 레벨을 제한하는 데 사용됩니다.
  • 빈 ‘게임 오브젝트(Game Object)’를 만듭니다.
  • 게임 오브젝트에 ‘복합 콜라이더 2D(Composite Collider 2D)’를 추가합니다.
  • ‘복합 콜라이더 2D(Composite Collider 2D)’의 지오메트리 타입(Geometry Type)을 ‘폴리곤(Polygons)’으로 설정합니다.
  • 게임 오브젝트의 ‘리지드바디(Rigidbody)’를 ‘정적(Static)’으로 설정합니다.
  • 게임 오브젝트에 ‘박스 콜라이더 2D(Box Collider 2D)’를 추가합니다.

‘박스 콜라이더 2D(Box Collider 2D)’를 조정하여 레벨에 맞춥니다.
2. 가상 카메라에 제한자(Confiner) 확장 기능을 추가합니다.

3. 이전에 만든 경계 상자를 바운딩 셰이프 2D(Bounding Shape 2D) 상자로 드래그합니다.

4. 카메라를 화면 가장자리로 제한할 것인지 여부를 결정합니다. ‘스크린 에지 제한(Confine Screen Edges)’ 체크박스로 설정/설정 해제할 수 있습니다.

5. 마지막으로 제한자에 댐핑(damping)을 추가할지 여부를 선택할 수 있습니다. 댐핑을 추가하면 카메라가 제한에 사용되는 콜라이더의 끝부분에 매끄럽게 오버랩됩니다. 이 효과를 적용하지 않으려면 댐핑 시간(Damping Time)을 0으로 설정합니다.

아래에서 결과가 어떻게 보이는지 확인하세요.

팁: ‘스크린 에지 제한(Confine Screen Edges)’ 체크박스를 사용할 때 바운딩 영역(경계 상자)은 가상 카메라의 직교 크기보다 커야 합니다. 경계 상자가 스크린보다 작으면 해당 영역에 대해 제한자가 제대로 작동하지 않습니다.

예시 비디오:

 

그룹 카메라

2D에서 사용할 수 있는 시네머신의 또 다른 유용한 기능은 그룹 카메라(Group Camera)입니다. 이 카메라를 사용하면 카메라가 따라갈 타겟 그룹을 생성할 수 있습니다. 그룹 카메라는 중요한 요소를 보여주는 컷씬을 제작하거나, 각 프레임에 두 개 이상의 오브젝트를 포함하려고 할 때, 또는 2D 로컬 멀티플레이어 게임을 제작하려는 경우에 유용합니다.

시네머신에서 이 기능을 사용하는 방법은 다음과 같습니다.

  1. 새 2D 가상 카메라를 생성합니다.
  2. 씬에서 새 게임 오브젝트를 생성합니다.
  3. 컴포넌트(Component) > 시네머신(Cinemachine)으로 이동하여 ‘시네머신 타겟 그룹(Cinemachine Target Group)’을 추가합니다.
  4. 타겟 그룹에 카메라가 따라갈 게임 오브젝트를 추가합니다.
  5. 인스펙터(Inspector)에서 타겟 그룹을 드래그하여 가상 카메라의 ‘추적(Follow)’ 타겟 프로퍼티에 추가합니다.
  6. 카메라의 줌(zoom)을 정의하는 최소/최대 직교 크기를 원하는 설정으로 조정합니다.
  7. 원하는 그룹 프레이밍(Group Framing) 유형을 정합니다. ‘가로(Horizontal)’ 옵션은 카메라 프레임을 지정할 때 가로 프레임 치수만 고려합니다. ‘세로(Vertical)’ 옵션은 프레임을 지정할 때 세로 프레임 치수만 고려합니다. ‘가로 및 세로(Horizontal and Vertical)’ 옵션은 가로 프레임 치수와 세로 프레임 치수를 모두 고려합니다.

‘Target Group’은 동일한 가상 카메라로 여러 타겟을 볼 수 있는 시네머신 컴포넌트로, 가중치에 따라 카메라 크기를 조정하여 타겟이 화면에 들어오도록 합니다. 예를 들어 모든 타겟의 가중치가 1이라면 타겟 그룹 내 모든 타겟이 화면에 들어옵니다.

다음은 플레이어와 나무 상자에 초점을 맞추는 그룹 카메라의 예입니다.

팁: 그룹 가상 카메라를 설정한 상태에서 그룹 멤버를 추가하거나 제거하려면 멤버의 가중치를 0에서 다른 값으로, 또는 설정된 값에서 0으로 조정하여 카메라의 프레임을 매끄럽게 재조정하세요.

임펄스를 사용하여 카메라 흔들기

시네머신 2.2버전에는 새로운 임펄스(Impulse) 확장 기능이 추가되었습니다. 이 확장 기능을 사용하면 코드를 작성하지 않고도 카메라 흔들기 효과를 적용할 수 있습니다. 임펄스 확장 기능은 가상 카메라의 확장 기능으로 추가할 수 있습니다. 이 확장 기능을 씬에 추가하는 방법은 다음과 같습니다.

  1. 시네머신 메뉴 옵션을 사용해 2D 가상 카메라를 만들고 타겟을 따라가도록 설정합니다.
  2. 확장 기능 추가(Add Extension) > 시네머신 임펄스 리스너(Cinemachine Impulse Listener)를 클릭합니다.
  3. 임펄스 리스너에서 ‘2D 거리 사용(Use 2D Distance)’ 체크박스가 선택되었는지 확인합니다.
  4. 채널 마스크(Channel Mask)를 사용하면 리스닝하고 있는 대상 임펄스를 필터링할 수 있습니다. 이 예시에서는 기본 채널을 사용하겠습니다.
  5. 임펄스를 내보낼 게임 오브젝트를 선택합니다. 이 예시에서는 튕기는 공을 사용하겠습니다. 공이 바닥에 닿을 때마다 기본 채널에서 임펄스 신호를 내보내며, 임펄스 리스너가 이 신호를 수신합니다.
  6. 컴포넌트 추가(Add Component)를 클릭한 다음 ‘시네머신 충돌 임펄스 소스(Cinemachine Collision Impulse Source)’를 검색합니다.
  7. 신호 셰이프(Signal Shape) 옵션에서 원시 신호(Raw Signal) 변수를 위한 신호를 선택합니다. 이것은 ‘NoiseSettings’ 프로필로, 기본 프로필을 사용하거나 직접 프로필을 만들 수 있습니다.
    • 톱니바퀴 모양 아이콘을 클릭하고 ‘새 노이즈 설정(New Noise Setting)’을 선택하여 새 ‘NoiseSettings’ 프로필을 만듭니다. 이 프로필을 프로젝트에 저장합니다.
    • 노이즈가 포지션과 회전 모두, 또는 둘 중 하나에만 영향을 미치도록 선택할 수 있습니다. 2D 게임이므로 X축 및 Y축 포지션 및 Z축 회전에도 영향을 미칩니다. 좋은 노이즈 프로필은 예측할 수 없는 무작위적인 노이즈 프로필입니다. 노이즈의 핵심은 자연의 무작위성을 모방하는 것입니다. 디테일이 상이한 여러 레이어를 추가하면 이러한 효과를 구현할 수 있습니다.
  8. 원하는 경우 노이즈 프로필의 빈도(Frequency)와 진폭(Amplitude)을 늘릴 수 있습니다.
  9. 공간 범위(Spatial Range) 옵션에서 소멸 거리(Dissipation Distance)를 조정할 수 있습니다. 이 항목을 통해 임펄스가 더 이상 적용되지 않는 범위를 지정할 수 있습니다. 우선 25로 지정해 보겠습니다.

필요에 따라 소멸 모드(Dissipation Mode)를 조정하여 감쇠 유형을 변경할 수 있습니다. 그밖에 다른 설정도 조정할 수 있습니다. 예시에서는 필요한 모든 항목을 조정했습니다.

그 결과물은 아래와 같습니다.

지금까지의 내용을 요약하자면 다음과 같습니다.

  • 패키지 관리자에서 시네머신 임포트
  • 2D 가상 카메라 생성
  • 가상 카메라를 2D 공간으로 제한
  • 여러 타겟을 따라가도록 가상 카메라 구성
  • 임펄스 모듈을 설정하여 카메라 흔들기 효과 추가

유익한 팁을 얻으셨기를 바랍니다. 다음 2D 프로젝트에서는 꼭 시네머신을 사용해 보세요! Unity 포럼의 토론에 참여해서 시네머신에 대한 최신 소식을 확인하실 수 있습니다.

 

4 코멘트

코멘트 구독

코멘트를 달 수 없습니다.

  1. I followed the directions exactly to use the Camera Confiner, but whenever my camera comes in contact with the confiner’s collider, the camera jumps off-map to show nothing instead of staying within its bounds.

  2. Chris Hendricks

    7월 30, 2018 5:16 오후

    This is pretty neat, but it does raise a question for me. You have it set that when the character is running to the right, you see more of what’s behind them and less of what’s in front of them. But if you look at classic games like Super Mario World, you can see that they do the opposite… when Mario’s running right, the camera moves to put Mario slightly left-of-center on the screen so that you can see more of what’s in front of him (a very useful thing for a platformer). Is this convenient to create with the Cinemachine camera?

  3. here is some proper idea about 2D printing. I have a little bit of interest in Cinemachine. the impacts of 2D printing in the platform of Cinemachine have been discussed here nicely. you may get more information from Gmail Support USA.

  4. GREAT!
    Some article on 3d (First Person / Third Person) would be awesome as well !