В моей игре я хочу проверить, что одно состояние в аниматоре закончено, затем вручную я запускаю другое состояние, но я не могу это проверить. Любые предложения, где я неправильно, вот код, который я сделал это для, этот код в функции обновления (параметр «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();
}
Я делаю так, как будто враг подходит к своему положению и встает на их место и стреляет, после чего эта анимация останавливается и начинается следующая анимация.
Есть несколько вещей, которые я не вижу здесь, которые могут пойти не так. НАПРИМЕР. расстояние до new_target_points, уверены ли вы, что оно становится ниже 1f? start_state начинается с false? – Hrusilov
Да, он становится ниже, чем 1f. Я отлаживал здесь, так что я уверен, и по умолчанию значение false равно false. –
Несмотря на то, что я видел некоторые реализации с помощью метода IsName(), я обычно использую тег if (this.anim.GetCurrentAnimatorStateInfo (0) .IsTag («Постоянный огонь 3»)). Это определенно сработало для меня. В Animator, чем теги ваши состояния с ним. – Hrusilov