void custom_nav_fuc()
    {
        switch (self_state)
        {
            case Self_State_Enmu.idle:
                {

                }
                break;

            case Self_State_Enmu.move:
                {

                    navMeshAgent.SetDestination(enemy.transform.position);
                    if (Vector3.Distance(enemy.transform.position, self.position) < 2f)
                    {
                        self_state = Self_State_Enmu.attack;
                        self_combat_Coroutine = Timer.Timer_IEnumerator(5f, custom_self_combat);
                        StartCoroutine(self_combat_Coroutine);
                    }

                }
                break;

            case Self_State_Enmu.attack:
                {

                    if (Vector3.Distance(enemy.transform.position, self.position) >= 2f)
                    {
                        self_state = Self_State_Enmu.move;
                        StopCoroutine(self_combat_Coroutine);
                    }
                }
                break;

            default:
                {

                }
                break;

        }
    }
    // Use this for initialization
    void Start()
    {
        self_state = Self_State_Enmu.move;

        animator = GetComponent<Animator>();

        self = GetComponent<Transform>();

        rigidbody = GetComponent<Rigidbody>();
        rigidbody.mass = 3.0f;
        //rigidbody.constraints = RigidbodyConstraints.FreezeRotation;

        bones = GetComponentsInChildren<Transform>() as Transform[];

        camRot = self.rotation;

        foreach (Transform t in bones)
        {
            if (t.GetComponent<Rigidbody>() && t.GetComponent<Rigidbody>() != rigidbody)
                t.GetComponent<Rigidbody>().isKinematic = true;
            if (t.GetComponent<Collider>() && t.GetComponent<Collider>() != self.GetComponent<Collider>())
                t.GetComponent<Collider>().isTrigger = true;
        }

        if (headBone == null)
        {
            foreach (Transform t in bones)
            {
                if (t.name == "head")
                    headBone = t;
            }
        }

        if (weapons.sword_Hand) weapons.sword_Hand.GetComponent<Renderer>().enabled = false;
        if (weapons.sword_Holster) weapons.sword_Holster.GetComponent<Renderer>().enabled = true; // On
        if (weapons.bow_Hand) weapons.bow_Hand.GetComponent<Renderer>().enabled = false;
        if (weapons.bow_Holster) weapons.bow_Holster.GetComponent<Renderer>().enabled = false;
        if (weapons.bow_Quiver) weapons.bow_Quiver.GetComponent<Renderer>().enabled = false;
        if (weapons.rifle_Hand) weapons.rifle_Hand.GetComponent<Renderer>().enabled = false;
        if (weapons.rifle_Holster) weapons.rifle_Holster.GetComponent<Renderer>().enabled = false;
        if (weapons.pistol_Hand) weapons.pistol_Hand.GetComponent<Renderer>().enabled = false;
        if (weapons.pistol_Holster) weapons.pistol_Holster.GetComponent<Renderer>().enabled = false;

        self_attack_parameter = new Attack_Parameter();

        animator.SetLayerWeight(1, 1f);

        navMeshAgent = transform.parent.GetComponent<NavMeshAgent>();

        enemy = GameObject.Find("hero");
        animator = GetComponent<Animator>();

        IEnumerator custom_nav_Coroutine = Timer.Timer_IEnumerator(0.5f, custom_nav_fuc);

        StartCoroutine(custom_nav_Coroutine);
    }