2016-10-20 9 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

Есть несколько вещей, которые я не вижу здесь, которые могут пойти не так. НАПРИМЕР. расстояние до new_target_points, уверены ли вы, что оно становится ниже 1f? start_state начинается с false? – Hrusilov

+0

Да, он становится ниже, чем 1f. Я отлаживал здесь, так что я уверен, и по умолчанию значение false равно false. –

+0

Несмотря на то, что я видел некоторые реализации с помощью метода IsName(), я обычно использую тег if (this.anim.GetCurrentAnimatorStateInfo (0) .IsTag («Постоянный огонь 3»)). Это определенно сработало для меня. В Animator, чем теги ваши состояния с ним. – Hrusilov

ответ

1

Скопирован из комментария:

Несмотря на то, что я видел некоторые реализации с помощью метода IsName() Я обычно иду для тега, если (this.anim.GetCurrentAnimatorStateInfo (0) .IsTag ("Стоять огнь- «)). Это определенно сработало для меня. В Animator, чем теги ваши состояния с ним.

Мое предположение, что название конвенции не работает. Возможно, вы ошиблись, или вы использовали имя клипа, а не состояние.

+0

Спасибо ..... :-) –