2016-10-20 3 views
0

내 게임에서 애니메이터의 한 상태가 완료된 후 수동으로 다른 상태를 트리거하는지 확인하고 싶습니다. 그러나 확인할 수 없습니다. 내가 잘못 가고 어떤 제안이 여기에 내가했던 코드입니다,이 코드는 업데이트 기능에 (매개 변수 'for_fire'와 국가 이름 '화재 3 서있는 것은'하나 개의 상태에 대해 동일) :애니메이터 상태가 오히려 완료되지 않았는지 확인

counter_anim++; 
if (counter_anim >= 5) 
{ 
    counter_anim = 0; 
     float distance = Vector3.Distance (this.transform.position, new_target_points); 
     if (distance <= 1.0f && !enter_state) 
     { 
      navmesh.Stop(); 
      anim.SetBool ("is_Firing", false); 
      anim.SetBool ("for_fire", true); 

      print ("i come here "+this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3")); 

      if (this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3") == true) 
      { 
       enter_state = true; // this bool variable is not getting true 
      } 
     } 
} 
//print (enter_state+"  "+ this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3")); 

if (enter_state && this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3")==false) 
{ 
    //print (this.gameObject.GetComponent<Animator>().GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3")); 

    anim.SetBool ("for_fire",false); 
    anim.SetBool ("new_pos",true); 
    fire_occured(); 
} 

나는 적을 자신의 위치로 이동하고 잠시 멈추고 서서,이 애니메이션이 멈추고 다음 애니메이션이 시작된다. 코멘트에서 복사

+0

여기서 볼 수없는 몇 가지 사항이 잘못 될 수 있습니다. E.G. new_target_points까지의 거리, 1f보다 낮습니까? enter_state가 false로 시작합니까? – Hrusilov

+0

예, 1f보다 낮아지고 여기에서 디버깅을 했으므로 확실합니다. enter_state는 기본적으로 false입니다. –

+0

EventHough는 IsName() 메서드를 사용하여 일부 구현을 보았습니다. 일반적으로 태그를 사용합니다. if (this.anim.GetCurrentAnimatorStateInfo 0) .IsTag ("Standing fire 3")). 이것은 definitelly 나를 위해 일했다. Animator에서 태그로 상태를 태그하십시오. – Hrusilov

답변

1

: 나는 (this.anim.GetCurrentAnimatorStateInfo (0) .IsTag ("화재 3 서 만약 내가 일반적으로 태그 이동 IsName() 메소드를 일부 구현을 본 적이 있지만

")). 이것은 확실히 나를 위해 일했습니다. Animator에서 태그로 상태를 태그하십시오.

내 생각 엔 이름 규칙이 작동하지 않았을 것입니다. 어쩌면 철자가 잘못되었거나 상태가 아닌 클립의 이름을 사용하고 있었을 것입니다.

+0

고마워 ..... :-) –

관련 문제