动画师不检查是否完成的状态
Animator state in not checking rather completed or not
在我的游戏中,我想检查 animator 中的一个状态是否完成,然后我手动触发另一个状态,但我无法检查。
我出错的任何建议,这是我这样做的代码,这段代码在更新函数中(参数 'for_fire' 和状态名称
'Standing 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 ();
}
我正在制作,敌人走到他的位置并站立一会儿并开火,之后这个动画停止并开始下一个动画。
从评论中复制:
尽管我已经看到一些使用 IsName() 方法的实现,但我通常会使用标签 if(this.anim.GetCurrentAnimatorStateInfo(0).IsTag("Standing fire 3"))。这绝对对我有用。在 Animator 中用它标记你的状态。
我的猜测是名称约定不起作用。也许您拼错了,或者您使用的是剪辑的名称而不是州。
在我的游戏中,我想检查 animator 中的一个状态是否完成,然后我手动触发另一个状态,但我无法检查。 我出错的任何建议,这是我这样做的代码,这段代码在更新函数中(参数 'for_fire' 和状态名称 'Standing 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 ();
}
我正在制作,敌人走到他的位置并站立一会儿并开火,之后这个动画停止并开始下一个动画。
从评论中复制:
尽管我已经看到一些使用 IsName() 方法的实现,但我通常会使用标签 if(this.anim.GetCurrentAnimatorStateInfo(0).IsTag("Standing fire 3"))。这绝对对我有用。在 Animator 中用它标记你的状态。
我的猜测是名称约定不起作用。也许您拼错了,或者您使用的是剪辑的名称而不是州。