0

私のゲームでは、アニメーターの 1 つの状態が完了したことを確認してから、手動で別の状態をトリガーしたいのですが、それを確認できません。私が間違っている提案は、ここに私が行ったコードがあります。このコードは更新関数にあります(パラメータ「for_fire」と状態名「Standing fire 3」は1つの状態で同じです):

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 ();
}

私は、敵が彼の位置に行き、しばらく立って発砲すると、このアニメーションが停止し、次のアニメーションが開始されるようにしています。

4

1 に答える 1

1

コメントからコピー:

IsName() メソッドを使用したいくつかの実装を見てきましたが、通常はタグ if(this.anim.GetCurrentAnimatorStateInfo(0).IsTag("Standing fire 3")) を使用します。これは間違いなく私にとってはうまくいきました。アニメーターでは、州にタグを付けます。

私の推測では、命名規則がうまくいかなかったのです。綴りを間違えたか、状態ではなくクリップの名前を使用していた可能性があります。

于 2016-10-21T11:15:58.580 に答える