C# 多个敌人不跟随玩家-Unity C

C# 多个敌人不跟随玩家-Unity C,c#,unity3d,C#,Unity3d,我做了一个RPG,敌人跟随玩家。当我复制敌人时,只有一个跟着他 所有的敌人都会跑动,他们会移动他的手臂和腿,但不会移动他的目的地,只有一个跟随玩家 我认为问题来自navMeshAgent,只有一个是所有敌人共享的 public float lookRadius = 10f; Transform target; static NavMeshAgent agent; CharacterCombat combat; public float timeLlegadaE = 10f; public

我做了一个RPG,敌人跟随玩家。当我复制敌人时,只有一个跟着他

所有的敌人都会跑动,他们会移动他的手臂和腿,但不会移动他的目的地,只有一个跟随玩家

我认为问题来自navMeshAgent,只有一个是所有敌人共享的

public float lookRadius = 10f;

Transform target;
static NavMeshAgent agent;
CharacterCombat combat;

public float timeLlegadaE = 10f;

public float velocidadAtaque;
private float attackCooldown = 0f;

bool ataque = false;

void Start()
{
    target = PlayerManager.instance.player.transform;
    agent = GetComponent<NavMeshAgent>();
    combat = GetComponent<CharacterCombat>();
    attackCooldown = velocidadAtaque;

}

// Update is called once per frame
void Update()
{
    attackCooldown -= Time.deltaTime;
    if (timeLlegadaE < 0)
    {
        ataqueFalse();

        float distance = Vector3.Distance(target.position, transform.position);

        if (distance <= lookRadius)
        {
            if(agent != null)
            {
                agent.SetDestination(target.position);

                avanzarTrue();

                if (distance <= (agent.stoppingDistance) && attackCooldown <= 0)
                {

                    ataqueTrue();

                    //anim.SetBool("Atack", false);
                    //Debug.Log("Interacting with " + transform.name);

                    FaceTarget();

                    attackCooldown = velocidadAtaque;
                }
                else if (distance <= (agent.stoppingDistance) && attackCooldown > 0)
                {
                    avanzarFalse();
                }
            }

        }

        lookRadius = 150f;
        gameObject.GetComponent<NavMeshAgent>().enabled = true;

    }
    else
    {
        timeLlegadaE -= Time.deltaTime;
    }
}
你的

is=>基本上在该脚本的所有实例之间共享,因此

agent = GetComponent<NavMeshAgent>();
如果可能的话,已经通过检查员进行分配

agent = GetComponent<NavMeshAgent>();
[SerializeField] private NavMeshAgent agent;

private void Start()
{
    if(!agent) agent = GetComponent<NavMeshAgent>();
    ...
}