Unity 5.2로 '유니티 애니메이션 에센셜' 6. 고급 캐릭터
애니메이션 따라하기.
* 블랜드 트리를 이용한 애니메이션:
- 'BlendTree' 씬을 새로 만들어 그곳에서 Girl-1708girl의 Animator 컴포넌트에 새로
GirlBlend란 명명한 애니메이션 콘트롤러를 적용, Girl에는 GirlCtrl.cs를 비활성시키고 GirlCtrlBlend.cs를
새로 추가한 뒤 테스트.
* Animator 창에서 우클릭, Create State-From New Blend Tree
클릭, 만들어진 상태를 더블클릭하면 Blend Tree 모드로 전환된다. Blend
Tree 상태를 선택, Inspector 창에서 Blend Type: 1D에서 2D
Freeform Cartesian으로 변경, + 를 클릭, Add Motion Field를
선택하여 9개의 Field 생성. 차례로 Motion에 애니메이션 파일들 적용하고 Pos X, Pos Y를 설정해준다.
Motion |
Pos X |
Pos Y |
Change Animation Speed |
HumanoidIdle |
0 |
0 |
1 |
StandQuaterTurnLeft |
1 |
0 |
1 |
StandQuaterTurnRight |
-1 |
0 |
1 |
HumanoidWalk |
0 |
0.5 |
1 |
HumanoidRun |
0 |
1 |
1 |
HumanoidWalkLeftSharp |
-1 |
0.5 |
1 |
HumanoidWalkRightSharp |
1 |
0.5 |
1 |
HumanoidRunLeft |
-1 |
1 |
1 |
HumanoidRunRight |
1 |
1 |
1 |
Horz, Vert란 이름으로 Float 변수를 생성해 주고 Parameters 설정에서 선택해 둔다.
GirlCtrlBlend.cs는 GirlCtrl.cs를 기본으로 수정한 것으로,
private int HorzFloat = Animator.StringToHash ("Horz");
private int VertFloat = Animator.StringToHash ("Vert");
void Start(){ animator = Body.GetComponent(); }
void Update(){
float vert = Input.GetAxis ("Vertical");
float horz = Input.GetAxis ("Horizontal");
animator.SetFloat (HorzFloat, horz, 0.2f, Time.deltaTime);
animator.SetFloat (VertFloat, vert, 0.2f, Time.deltaTime);
}
으로 기존 애니메이션 animator.SetTrigger("Run"); 식의 호출 형태에서 바꾼
것.
이렇게 처리해 두면 속도와 방향에 따라 자동으로 애니메이션을 자연스럽게 섞어서 표현해준다.
현재는 뒷쪽 걷기를 설정하지 않아 뒤로 이동할 경우 애니메이션이 적용되지 않는데 이건 뒷쪽 걷기 애니메이션, 뒷쪽
걷기 오른쪽, 뒷쪽 걷기 왼쪽 애니메이션 상태를 추가하면 간단히 해결될 문제다.
잘 실행되는데 점프의 경우 어찌 처리해야할지 애매하다.
17/9/21 목 |