본문 바로가기

Unity/▶ Game Development: 2D Game

[2D Game] #2. 캐릭터 애니메이션 효과

728x90
반응형

애니메이션 만들기

제작할 애니메이션을 저장할 폴더를 생성한다.

  1. 프로젝트 창의 Asset 폴더 하위에 새 폴더를 생성한다.
  2. 생성된 폴더 이름을 Animation으로 설정한다.

애니메이션 만들기

여러 장의 스프라이트 이미지를 사용해 캐릭터 애니메이션을 만들어보자. 유니티 에디터에서 애니메이션을 제작하기 위해 애니메이션 창을 연다. 단축키로는 [cmd + 6]을 이용한다.

  1. 상단 메뉴 > Window > Animation > Animation
  2. 열린 애니메이션 창 크기를 조절한다.

Window창

애니메이션 창을 열어 Create 버튼을 누르면 Player 게임 오브젝트에 관한 새로운 애니메이션 클립과 애니메이터 컨트롤러를 생성한다.

 

[Run 애니메이션 클립 만들기]

  1. 애니메이션 창에서 Create 클릭
  2. 새로운 애니메이션 클립을 Run이라는 이름을 Asset 폴더 내부의 Animation 폴더에 저장

파인더 화면

[Run 애니메이션 클립 구성하기]

  1. 프로젝트 창에서 Sprites 폴더로 이동
  2. 캐릭터 스프라이트 펼치기 > 모든 스프라이트 선택 후 애니메이션 창의 타임라인으로 이동

드래그&드롭한 캐릭터 스포트라이트들이 Run 애니메이션 클립의 타임라인에 키프레임으로 배치된다. 2D 애니메이션 클립을 만드는 방법 중 하나는 이런 식으로 연속된 스프라이트를 타임라인 위에 키프레임으로 배치하는 것이다.

 

구성된 애니메이션은 프리뷰 재생 버튼을 클릭하여 확인할 수 있다.

 

이때, 초당 샘플 프레임이 너무 빨라 애니메이션을 제대로 볼 수 없다. 따라서 애니메이션 창에서 Sample을 16으로 변경한다.

 

+ 샘플 프레임 변경

유니티가 업데이트 되면서 샘플 프레임이 보이지 않는 상태가 디폴트값이 되었다. 따라서 유니티 애니메이션 샘플 프레임의 값을 보기 위해서는 다음과 같이 설정한다.

 

애니메이터의 좌측 상단의 두 번째 더보기 클릭 Show Sample Rate 클릭

 

[Jump 애니메이션 클립 생성]

  1. 애니메이션 창에서 Run 클릭 > Create New Clip 클릭
  2. 새로운 애니메이션 클립을 Jump라는 이름으로 Animation 폴더에 저장
  3. Samples을 6으로 변경

[Die 애니메이션 클립 생성]

  1. 애니메이션 창에서 Run 클릭 > Create New Clip 클릭
  2. 새로운 애니메이션 클립을 Die라는 이름으로 Animation 폴더에 저장
  3. Samples를 6으로 변경
  4. Die 애니메이션 루프 설정 해제 : 인스펙터 창에서 Loop Time 해제

Die 메서드 Loop Time 설정

유한 상태 머신

현재 애니메이션 클립은 준비되었지만 아직 어떤 애니메이션 클립을 어떤 상황에서 어떻게 재생할지 결정하지 않았다. 이러한 상황에 맞는 애니메이션을 재생하려면 애니메이션 컨트롤러가 필요하다.

 

애니메이션 컨트롤러는 상황에 어떤 애니메이션 클립을 재생해야 하는지 저장한 지도이며, 유한 상태 머신 모델을 사용한다.

애니메이션 컨트롤러: 특정 상황에 따라 어떤 애니메이션 클립을 사용할지에 대한 지도

 

유한 상태 머신이란 유한한 수의 상태가 존재히며, 한 번에 한 상태만 '현재 상태'가 되도록 프로그램을 설계하는 모델이다.

유한 상태 머신에서는 어떤 상태에서 다른 모델로 전이하여 현재 상태를 전환할 수 있다.

유한 상태 머신: 유한한 수의 상태가 존재하며,
한 번에 한 상태만 '현재 상태'가 되도록 프로그램을 설계하는 모델이다.

 

기초적인 게임의 적 AI는 유한 상태 머신의 대표적인 예이다. 유한 상태 머신으로 게임 속 적 AI로 구현한다고 가정할 때, 유한 상태 머신으로 구현한 적 AI는 다음과 같은 3가지 상태를 가진다.

유한 상태 머신 상태도

탐색 목표를 찾아낸다.
추적 목표를 쫒는다.
공격 목표를 공격한다.

위의 상태도에서 적 AI의 현재 상태는 3가지 모두가 될 수 있다. 다만 두 개 이상의 상태가 동시에 현재 상태가 될 수는 없다.

 

유한 상태 머신에서는 전이를 통해 현재 상태에서 다른 상태로 이동할 수 있다. 이때의 이동을 화살표로 표현한다. 정리하자면, 여러 상태 중 하나의 상태면 현재 상태가 되지만 전이를 통해서 현재 상태를 다른 상태로 이동할 수 있다.

 

이처럼 유한 상태 머신은 현재 상태가 어떤 상태이며 어떤 조건에서는 어떤 상태가 현재 상태가 되어야 하는지 분명하게 표현할 수 있다. 같은 이유로 유니티에서는 애니메이션 제어에 유한 상태 머신을 사용한다.

 

한 번에  단 하나의 애니메이션만 재생될 수 있지만 어떤 애니메이션이 현재 재생되는 애니메이션이 될지는 전이를 통해 결정할 수 있다.

728x90
반응형
댓글