public override void Update()
    {
        agent.SetDestination(target.transform.position);
        distance = Vector3.Distance(npc.transform.position, target.transform.position);
        if (distance < 5f)
        {
            anim.SetTrigger("isWalking");
            agent.speed = 3f;
        }

        if (distance < 1.25f)
        {
            nextState = new NpcKill(npc, agent, anim);
            stage     = EVENT.EXIT;
        }
        if (CanBeseen())
        {
            nextState = new NpcHide(npc, agent, anim);
            stage     = EVENT.EXIT;
        }
    }
    public override void Update()
    {
        Enemy();
        pursuer = GetTarget();
        Vector3 direction = (npc.transform.position - pursuer.transform.position).normalized;

        if (Vector3.Distance(npc.transform.position, pursuer.transform.position) < 20)
        {
            agent.SetDestination(direction + agent.transform.position);
        }
        if (Vector3.Distance(npc.transform.position, pursuer.transform.position) >= 20 && activated)
        {
            Vector3    relativePos = pursuer.transform.position - npc.transform.position;
            Quaternion rotation    = Quaternion.LookRotation(relativePos, Vector3.up);
            npc.transform.rotation = rotation;
            anim.SetTrigger("isIdle");
            anim.ResetTrigger("isRunning");
            agent.isStopped = true;
            FunctionTimer.Create(() => nextState = new NpcKill(npc, agent, anim), 3.5f);
            FunctionTimer.Create(() => stage     = EVENT.EXIT, 3.5f);
            activated = false;
        }
    }