IEnumerator ChangeStateAfterAnimation(AnimationClip clip, Enemy_BugEnemy_State.MotionState desiredMotionState)
    {
        yield return(new WaitForSeconds(clip.length));

        GetComponent <Enemy_BugEnemy_State>().CurrentMotionState  = desiredMotionState;
        GetComponent <Enemy_BugEnemy_State>().CurrentControlState = Enemy_BugEnemy_State.ControlState.Patrol;
    }
    void Update()
    {
        _currentMotionState = GetComponent <Enemy_BugEnemy_State>().CurrentMotionState;

        if (_currentMotionState == Enemy_BugEnemy_State.MotionState.Idle)
        {
            _animation.CrossFade(Idle.name);
        }
        if (_currentMotionState == Enemy_BugEnemy_State.MotionState.Running)
        {
            _animation.CrossFade(Run.name);
        }
        if (_currentMotionState == Enemy_BugEnemy_State.MotionState.NotYetImplimented)
        {
            _animation.Stop();
        }



        if (_currentMotionState == Enemy_BugEnemy_State.MotionState.RecoverFront)
        {
            if (!alreadyPlayed)
            {
                GetComponent <Enemy_BugEnemy_State>().CurrentControlState = Enemy_BugEnemy_State.ControlState.Stop;
                _animation.Play(RecoverFront.name);
                alreadyPlayed = true;
                StartCoroutine(ChangeStateAfterAnimation(RecoverFront, Enemy_BugEnemy_State.MotionState.Idle)); //change state after animation played
            }
        }
        if (_currentMotionState == Enemy_BugEnemy_State.MotionState.RecoverBack)
        {
            //print("BackAnimCalled");
            if (!alreadyPlayed)
            {
                GetComponent <Enemy_BugEnemy_State>().CurrentControlState = Enemy_BugEnemy_State.ControlState.Stop;
                _animation.Play(BackRecover.name);
                alreadyPlayed = true;
                StartCoroutine(ChangeStateAfterAnimation(BackRecover, Enemy_BugEnemy_State.MotionState.Idle)); //change state after animation played
            }
        }
    }