C# 僵尸工作正常,但它';s预置在unity中的动画中创建问题

C# 僵尸工作正常,但它';s预置在unity中的动画中创建问题,c#,unity3d,unity3d-2dtools,C#,Unity3d,Unity3d 2dtools,我正在unity中创建一个FPS射击游戏。下面是我在僵尸上使用的脚本,它工作正常,但当我创建僵尸的预制体时,它也工作正常,但它停止了攻击动画,其他事情也工作正常,我现在该怎么办?请帮助我……我使用了三个不同的僵尸,使用了相同的脚本,它们都工作得很好,但当我创建这些僵尸的预制体时,它们再次创建问题并停止执行攻击动画,尽管当它们靠近时,我的健康状况会下降。请帮我解决这个问题,我不知道我的代码是不是错了,或者我在unity设置中犯了什么错误,但要做到这一点并纠正它是非常困难的,伙计们,这是我最后一年的

我正在unity中创建一个FPS射击游戏。下面是我在僵尸上使用的脚本,它工作正常,但当我创建僵尸的预制体时,它也工作正常,但它停止了攻击动画,其他事情也工作正常,我现在该怎么办?请帮助我……我使用了三个不同的僵尸,使用了相同的脚本,它们都工作得很好,但当我创建这些僵尸的预制体时,它们再次创建问题并停止执行攻击动画,尽管当它们靠近时,我的健康状况会下降。请帮我解决这个问题,我不知道我的代码是不是错了,或者我在unity设置中犯了什么错误,但要做到这一点并纠正它是非常困难的,伙计们,这是我最后一年的项目,我陷入了非常困难的境地

using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class PlayerChaseWithoutFaceFollowing : MonoBehaviour {

        public Transform player;
       // public Transform head;
        // public Transform sword;

        static Animator anim;

        //bool pursuing = false;

        // Use this for initialization
        void Start()
        {
            anim = GetComponent<Animator>(); // assigning component
        }

        // Update is called once per frame
        void Update()
        {
            Vector3 direction = player.position - this.transform.position; //to get the direction 


           // float angle = Vector3.Angle(direction, this.transform.forward);
            // float swordmovement = Vector3.Angle(direction, head.up);
            if (anim.GetBool("Death"))
            {
                anim.SetBool("isWalking", false);
                anim.SetBool("isIdle", false);
                anim.SetBool("isAttacking", false);
            }
            else
            {
                if (Vector3.Distance(player.position, this.transform.position) < 10 )
                {
                    direction.y = 0;
                    this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction), 0.1f); // rotate enemy to player
                    anim.SetBool("isIdle", false); // no more idle state

                    if (direction.magnitude > 3) // start walking
                    {
                        this.transform.Translate(0, 0, 0.5f);
                        anim.SetBool("isWalking", true); //start walking animation
                        anim.SetBool("isAttacking", false);
                    }
                    else
                    {
                        anim.SetBool("isWalking", false);
                        anim.SetBool("isAttacking", true);


                    }
                }
                else
                {
                    anim.SetBool("isIdle", true);
                    anim.SetBool("isWalking", false);
                    anim.SetBool("isAttacking", false);
                    //pursuing = false;
                }

            }
            //if (anim.GetBool("isAttacking") && !anim.GetBool("isWalking"))
            //{
            //    AudioSource EnemyAttack = GetComponent<AudioSource>();
            //    EnemyAttack.Play();
            //}

            //if (anim.GetBool("isAttacking") && !anim.GetBool("isWalking"))
            //{
            //    PlayerHealthBar.value -= 2;
            //    Debug.Log("Hit");
            //    //anim.SetBool("isAttacking", false);

            //}
        }
    }
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类玩家有以下行为:单一行为{
公共转换播放器;
//公众转化负责人;
//公共转化剑;
静态动画;
//bool=false;
//用于初始化
void Start()
{
anim=GetComponent();//分配组件
}
//每帧调用一次更新
无效更新()
{
Vector3 direction=player.position-this.transform.position;//获取方向
//浮动角度=矢量3.角度(方向,this.transform.forward);
//浮剑运动=矢量3.角度(方向,头部向上);
如果(anim.GetBool(“死亡”))
{
动画设置工具(“isWalking”,false);
动画设置工具(“isIdle”,假);
动画设置工具(“isAttacking”,false);
}
其他的
{
if(向量3.距离(player.position,this.transform.position)<10)
{
方向y=0;
this.transform.rotation=Quaternion.Slerp(this.transform.rotation,Quaternion.LookRotation(direction),0.1f);//将敌人旋转给玩家
anim.SetBool(“isIdle”,false);//不再处于空闲状态
如果(direction.magnity>3)//开始行走
{
this.transform.Translate(0,0,0.5f);
SetBool(“isWalking”,true);//开始行走动画
动画设置工具(“isAttacking”,false);
}
其他的
{
动画设置工具(“isWalking”,false);
动画设置工具(“isAttacking”,真);
}
}
其他的
{
anim.SetBool(“isIdle”,真);
动画设置工具(“isWalking”,false);
动画设置工具(“isAttacking”,false);
//追求=虚假;
}
}
//if(anim.GetBool(“isAttacking”)&&!anim.GetBool(“isWalking”))
//{
//AudioSource EnemyAttack=GetComponent();
//EnemyAttack.Play();
//}
//if(anim.GetBool(“isAttacking”)&&!anim.GetBool(“isWalking”))
//{
//PlayerHealthBar.value-=2;
//Log(“Hit”);
////anim.SetBool(“isAttacking”,false);
//}
}
}

请参阅下面的图片

您设置参数的方式可能会产生误导。尝试使用int作为animator过渡参数,因此不要这样做

anim.SetBool("isIdle", true);
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", false);
是吗

anim.SetInt(“状态”,0)

这是关于,而不是关于。