GameForFun

블로그 이미지
by PforPepsi

TAG CLOUD

  • Total hit
  • Today hit
  • Yesterday hit

이 글에서는 Animator를 소개, 사용법을 한번 적어보고자 합니다.
Animator라는 기능을 아마 3장에 걸쳐서 글을 적을 것 같습니다. 내용은 다음과 같습니다.

1장 - 뭐하는 놈인가? 와 기본적인 설명 
2장 - 간단한 애니메이션 플레이 & 스크립트 추가!
3장 - Avatar와 IK의 기능

Unity 4.0 에서 가장 큰 기능의 추가는 바로 [Mechanim]이라는 기능의 추가입니다.

http://docs.unity3d.com/Documentation/Manual/MecanimAnimationSystem.html



그림 1. Mechanim의 상태 표

Mechanim은 애니메이션의 기능을 강화해서 새로 만든 기능입니다.
기존에 Animation이라는 Component를 대체할 놈이 바로 Animator라는 놈이고 전체적인 이름으로는 Mechanim으로 불리는 것이지요.

기존 유니티에서 존재하는 Animation이라는 놈은 사용자가 Animation.Play()와 같이 직접적으로 코드를 실행하여 애니메이션을 일일이 플레이 해줬었습니다.

그러나 4.0 에 와서는 이러한 과정을 시각적으로 표현하기 위해 새로운 기능을 만든것이죠. 
기본적으로 위의 [그림 1]에서 볼 수 있듯이 이 Mechanim 이라는 놈은 [유한 상태 기계 = FSM(Finite State Machine)]라는 형태로 작동하게 됩니다.

어떤 상태에서 어떤 동작을 할지 정해주고, 어떤 상태에서 어떤 상태로 갈지를 정해줘서 애니메이션의 흐름을 시각적으로 제어하는 것입니다. 
먼저 그림에 나와있는 것부터 설명드리도록 하겠습니다.


1. [State]
- 상태라고 합니다. 해당 상태에서 어떤 애니메이션을 플레이 할지를 정할 수 있습니다.

Speed는 애니메이션의 속도를 지정합니다.
Motion은 플레이할 Animation을 설정해줍니다.

2. [Transition]
- 상태의 전이를 Transition이라고 합니다. 이는 조건을 달고 있으며, 시작 상태와 끝 상태를 지정해 줘야 됩니다.

Solo - 전이 가능 상태를 뜻합니다(? 잘 모르겠군요...)
Mute - 전이 불가 상태를 뜻합니다.
Atomic - 인터럽트가 불가능한 상태 전이인지 확인합니다.
Condition - 특정 컨디션에 Start State에서 End State로 변환 되도록 합니다.
Condition과 같은 경우는 Parameter에 등록되어있는 값을 관찰하여 상태 변경 조건으로 쓸 수 있습니다.

현재 그림을 보면 화살표가 우측으로 되어있는데 이는 Start -> End는 가능하지만, End -> Start는 불가능하다는 것입니다.

따라서 한가지의 Transition은 한 방향을 나타낸 다는 것을 아시면 됩니다.

3. Layer
- 이는 여러개의 FSM을 동시에 돌릴 때 사용하라고 만들어 놓은 계층 형태입니다.
가령 플레이어가 걸으면서 손을 흔드는 애니메이션을 만들고 싶다면, 상체를 위한 FSM과 하체를 위한 FSM을 분리하여 제작하면 
상체와 하체가 각각의 상태에 따른 애니메이션을 보여줄 수 있습니다.

4. Parameter 
- Transition의 조건을 위한 것들입니다. 추후에 스크립팅 예제에서 다시 보도록 하죠.
참고로 한개의 Animator Controller(지금 제가 설명드리는거)에서 사용되는 것입니다.

5. Sub State Machine
-특정 상태 내부에 또 다른 상태가 존재할 때 사용하는 기능입니다.
가령 플레이어가 가만히 있을때 랜덤으로 노래, 걷기, 춤 중에 한개의 애니메이션을 플레이 한다면 다음과 같이 사용 할 수 있습니다.


Idle상태에서 새로운 상태 머신으로 들어가서 Sing, Walk Around, Dance중 한개를 선택하는 것입니다.


6. Blend Tree
- 뭔가 굉장히 쓸모있어보이는데.. 프로가 아니여서인지... 기능이 없는것인지... 일단 설명을 못하겠습니다. 더블 클릭!!!!!!
Parameter에 정의된 float값중 하나를 봐서 여러가지 motion들을 blending해주는 것 같습니다.

현재 설정된 값이 float1이란 값을 바라보라는 것이고, 0~1 사이의 값을 봐서 플레이 할 모션을 정해주는 기능을 하는것 같습니다.}
따라서 다음과 같은 상황에 쓰일 듯 합니다.
몸의 기울기(float 값)에 따라 몸이 좌(0과 가까울수록), 혹은 우(1과 가까울 수록)로 기울어져서 달리게 된다.

기본 설명은 이정도로 하고 다음 장에서는 애니메이션을 직접 다루도록 해보죠. 


'[Unity3D]' 카테고리의 다른 글

GFFScripts  (0) 2012.12.14
카메라 애니메이터.. 수정해야됨.  (0) 2012.11.30
Kinect 관련 블로그  (0) 2012.11.15
SpotLight 버그  (0) 2012.11.06
여러 애니메이션 한번에 플레이하기.  (0) 2012.10.30
AND

ARTICLE CATEGORY

목록들 (118)
[Unity3D] (39)
그래픽관련 (13)
잉여잉여 (25)
프로그래밍 (27)
노래♬ (3)
Game_Design(기획) (3)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

ARCHIVE