기본적으로 캐릭터는 항상 특정 종류의 액션을 취하고 있다 봅니다. 취할 수 있는 액션은 게임플레이의 타입에 따라 다르지만 일반적으로 대기, 걷기, 달리기, 점프 등이 있습니다. 이 액션들을 states 라고 하는데 캐릭터가 걷거나 대기하는 등의 “상태”에 있다는 의미에서 유래되었습니다. 일반적으로 캐릭터가 어떤 상태에서 다른 어떤 상태로든 즉시 전환될 수 있는 것이 아니기에 다음에 전환할 수 있는 상태에 제약이 있습니다. 예를 들어, 달리면서 점프하는 액션은 캐릭터가 이미 달리고 있는 상태에서만 취할 수 있으며 가만히 서 있는 상태에서는 취할 수 없습니다. 따라서 대기 상태에서 달리며 점프라는 상태로 곧바로 전환해서는 안 됩니다. 현재 상태에서 캐릭터가 넘어갈 수 있는 다음 상태에 대한 옵션을 state transitions 이라고 합니다. 종합해 보면, 상태의 집합, 전환의 집합, 현재 상태를 기억하기 위한 변수가 합쳐 state machine 을 이룹니다.
상태 머신의 상태와 전환은 다이어그램으로 나타낼 수 있습니다. 노드는 상태를 나타내며 노드 사이의 화살표가 전환을 나타냅니다. 현재 상태는 노드 중 하나에 위치한 마커 또는 하이라이트를 통해 알 수 있으며 다른 노드로 넘어갈 때에는 화살표들 중에 하나를 따라서만 갈 수 있습니다.
애니메이션에서 상태 머신이 중요한 이유는 상대적으로 적은 코딩만으로도 상당히 쉽게 설계 및 업데이트할 수 있기 때문입니다. 각 상태에는 연계된 모션이 있어서 상태 컴퓨터가 해당 상태에 있을 때마다 재생됩니다. 이를 통해 애니메이터나 디자이너는 코드가 어떻게 동작할지를 고려하지 않고도 캐릭터 액션 및 애니메이션의 가능한 시퀀스를 정의할 수 있게 됩니다.
Unity의 애니메이션 상태 머신은 특정 캐릭터에 관련된 애니메이션 클립 전부를 파악하는 방법과 게임에서 다른 애니메이션을 트리거하기 위한 다양한 이벤트(예: 사용자 입력)를 사용할 수 있는 방법을 제공합니다.
애니메이션 상태 머신은 애니메이터 컨트롤러 창에서 설정할 수 있으며 다음과 같습니다.
상태 머신은 States, Transitions, Events 로 구성되며 더 작은 서브 상태 머신은 더 큰 머신의 컴포넌트로 사용될 수 있습니다. 자세한 내용은 애니메이션 상태 및 애니메이션 전환 레퍼런스 페이지를 참조하십시오.