들어가며... |
기존의 FPS 게임과는 달리 현재 개발 중인 게임은 캐릭터가 시간, 게임 진행 상황에 따라 알아서 이동을 하게 된다. 그리하여 때에 맞는 애니메이션이 자동으로 실행되도록 해야하는데 Unity 공식 메카님 튜토리얼에서 알려준 방식과는 조금 달리 애니메이션을 사용하게 된다.
How To... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | private Animator avatar; void Update() { if (this.avatar.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Walk")) { // Do something } if (this.avatar.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Idle")) { // Do something } } |
this.avatar.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Walk")를 이용하여 원하는 대로 구현하였다.
"Base Layer.Walk"에서 보이듯 띄어쓰기도 지켜줘야한다.
마치며... |
이외에도 nameHash와 Animator.StringToHash(String name)으로 구현할 수 있을 것 같았으나, 애니메이션이 변경되었을때 아래의 currentBaseState.nameHash가 변경되지 않는 것을 확인하였다.
- static int currentState = Animator.StringToHash("Base Layer.Idle");
- void Start (){
- avatar = GetComponent<Animator>();
- }
- void FixedUpdate ()
- {
- currentBaseState = avatar.GetCurrentAnimatorStateInfo(0);
- if (currentBaseState.nameHash == currentState){
- Debug.Log("Do Something");
- }
- }
'-----Unity 3d---- > Tips' 카테고리의 다른 글
Editor 모드에서 캐릭터가 지면에 정확히 위치하지 않는 현상 (0) | 2014.05.09 |
---|---|
클래스(class)간의 정보 공유 (0) | 2014.05.09 |
Terrain Inspector에서 추가 된 나무와 풀 삭제 방법 (0) | 2014.05.09 |
[Unity3d]표면 스냅 기능을 이용한 캐릭터 지면에 정확히 배치하기 (0) | 2013.09.05 |