Unity Animation Layer

Idle State


위 모델의 Animation State는 Default Layer의 Idle State입니다.
 
걷는 애니메이션과 오브젝트를 들고 있는 애니메이션을 혼합(Mix)해서 사용하고 싶습니다.

Hold State

애니메이션 State를 혼합할 때 사용하는 것이 Animation Layer입니다.
 

Avatar 및 레이어 추가

 

Avatar Mask를 하나 생성하고 이름을 그에 맞게 변경해줍니다.
특정 오브젝트를 잡고 있는 애니메이션의 상태에서 하체의 움직임은 필요없고 상체의 움직임만 변경되길 원하므로 하체는 클릭하여 제외시켜주면 됩니다.

 

Animator창으로 가서 Layer버튼을 누르고 + 버튼을 눌러 새로운 Layer을 만들어준 뒤 이름을 적절하게 변경해줍니다.

 

Weight  현재 레이어와 아래 레이어의 애니메이션 비중, 1에 가까울수록 현재 레이어의 가까운 모션을 취함
Mask  출력하고자 하는 애니메이션의 부위
Blending  앞 순서의 애니메이션 계산에 덮어씌울 것인지, 가산(Add)할 것인지
Sync  다른 레이어와의 동기화 설정
IK Pass  IK 애니메이션 사용 여부
더보기

IK 애니메이션에 대해

좌 : Forward Kinemetics(FK) 우 : Invers Kinemetics(IK)
  • IK : 허리를 기준으로 잡았을 때 왼쪽 상체부위는 손끝이 마지막으로 계산됨
  • FK : 손끝이 움직이면 그에 맞춰 다른 부위의 위치도 함께 계산됨

각 번호는 움직일 때 계산되는 순서

 

Hold가 True가 되면 상단은 오브젝트를 들고 있는 애니메이션을 취하고 하단은 걷거나 , Idle 등의 State를 취하게 됩니다.
 

우측 움짤은 "Hold Animation + Idle Animation"이 혼합된 상태입니다.

 

 Animator.SetLayerWeight(Layer, Weight);

 

코드로 특정 인덱스의 레이어를 컨트롤하기 위해서는 위 처럼 작성하시면 됩니다.