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 } } }