/// <summary> /// 主角的动画控制 /// </summary> /// <returns></returns> IEnumerator ControlHeroAnimationState() { while (true) { yield return(new WaitForSeconds(0.1F)); switch (CurrentActionState) { case HeroActionState.NormalAttack: /* 攻击连招处理(自动状态转换) */ switch (_CurATKCombo) { case NormalATKComboState.NormalATK1: _CurATKCombo = NormalATKComboState.NormalATK2; _AnimationHandle.CrossFade(Ani_NormalAttack1.name); AudioManager.PlayAudioEffectA("BeiJi_DaoJian_3"); yield return(new WaitForSeconds(Ani_NormalAttack1.length / 2.5F)); _CurrentActionState = HeroActionState.Idle; break; case NormalATKComboState.NormalATK2: _CurATKCombo = NormalATKComboState.NormalATK3; _AnimationHandle.CrossFade(Ani_NormalAttack2.name); AudioManager.PlayAudioEffectA("BeiJi_DaoJian_2"); yield return(new WaitForSeconds(Ani_NormalAttack2.length / 2.5F)); _CurrentActionState = HeroActionState.Idle; break; case NormalATKComboState.NormalATK3: _CurATKCombo = NormalATKComboState.NormalATK1; _AnimationHandle.CrossFade(Ani_NormalAttack3.name); AudioManager.PlayAudioEffectA("BeiJi_DaoJian_1"); yield return(new WaitForSeconds(Ani_NormalAttack3.length / 2F)); _CurrentActionState = HeroActionState.Idle; break; default: break; } break; case HeroActionState.MagicTrickA: _AnimationHandle.CrossFade(Ani_MagicTrickA.name); AudioManager.PlayAudioEffectA("SwordHero_MagicA"); yield return(new WaitForSeconds(Ani_MagicTrickA.length)); _CurrentActionState = HeroActionState.Idle; break; case HeroActionState.MagicTrickB: _AnimationHandle.CrossFade(Ani_MagicTrickB.name); AudioManager.PlayAudioEffectA("SwordHero_MagicB"); yield return(new WaitForSeconds(Ani_MagicTrickB.length)); _CurrentActionState = HeroActionState.Idle; break; case HeroActionState.MagicTrickC: _AnimationHandle.CrossFade(Ani_MagicTrickC.name); AudioManager.PlayAudioEffectA("SwordHero_MagicC"); yield return(new WaitForSeconds(Ani_MagicTrickC.length)); _CurrentActionState = HeroActionState.Idle; break; case HeroActionState.MagicTrickD: _AnimationHandle.CrossFade(Ani_MagicTrickD.name); AudioManager.PlayAudioEffectA("SwordHero_MagicD"); yield return(new WaitForSeconds(Ani_MagicTrickD.length)); _CurrentActionState = HeroActionState.Idle; break; case HeroActionState.None: break; case HeroActionState.Idle: _AnimationHandle.CrossFade(Ani_Idle.name); break; case HeroActionState.Runing: _AnimationHandle.CrossFade(Ani_Runing.name); //处理主角跑动音效 AudioManager.PlayAudioEffectB(AcHeroRuning); yield return(new WaitForSeconds(AcHeroRuning.length)); break; default: break; } } }
/// <summary> /// 主角休息,移动,普攻,技能输出等动画操作 /// 无限循环,等待0.05s执行一次 /// </summary> /// <returns></returns> IEnumerator ControlHeroAnimationState() { while (true) { yield return(new WaitForSeconds(0.03F)); switch (CurrentActionState) { case HeroActionState.NormalAttack: /* 攻击连招处理(自动状态转换) */ switch (_CurATKCombo) { case NormalATKComboState.NormalATK1: _CurATKCombo = NormalATKComboState.NormalATK2; _AnimationHandle.CrossFade(Ani_NormalAttack1.name); yield return(new WaitForSeconds(Ani_NormalAttack1.length)); _CurrentActionState = HeroActionState.Idle; break; case NormalATKComboState.NormalATK2: _CurATKCombo = NormalATKComboState.NormalATK3; _AnimationHandle.CrossFade(Ani_NormalAttack2.name); yield return(new WaitForSeconds(Ani_NormalAttack2.length)); _CurrentActionState = HeroActionState.Idle; break; case NormalATKComboState.NormalATK3: _CurATKCombo = NormalATKComboState.NormalATK1; _AnimationHandle.CrossFade(Ani_NormalAttack3.name); yield return(new WaitForSeconds(Ani_NormalAttack3.length)); _CurrentActionState = HeroActionState.Idle; break; default: break; } //Switch Combo End break; case HeroActionState.MagicTrickA: _AnimationHandle.CrossFade(Ani_MagicTrickA.name); yield return(new WaitForSeconds(Ani_MagicTrickA.length)); _CurrentActionState = HeroActionState.Idle; break; case HeroActionState.MagicTrickB: _AnimationHandle.CrossFade(Ani_MagicTrickB.name); yield return(new WaitForSeconds(Ani_MagicTrickB.length)); _CurrentActionState = HeroActionState.Idle; break; case HeroActionState.None: break; case HeroActionState.Idle: //Idle操作即走即停,不需要等待时间 _AnimationHandle.CrossFade(Ani_Idle.name); break; case HeroActionState.Runing: //Run操作即走即停,不需要等待时间 _AnimationHandle.CrossFade(Ani_Runing.name); break; default: break; }//Switch CurrentActionState End } }
/// <summary> /// 主角的动画控制 /// </summary> private IEnumerator ControlHeroAnimationState() { while (true) { yield return(new WaitForSeconds(0.1f)); switch (curActionState) { case HeroActionState.None: break; case HeroActionState.Idle: animHandle.CrossFade(AniIdle.name); break; case HeroActionState.Run: animHandle.CrossFade(AniRun.name); break; case HeroActionState.NormalAttack: //连招处理 switch (curATKState) { case NormalATKComboState.NormalATK1: curATKState = NormalATKComboState.NormalATK2; if (isSinglePlay) { animHandle.CrossFade(AninormalAttack1.name); isSinglePlay = false; yield return(new WaitForSeconds(AninormalAttack1.length / 2.5f)); } else { StartCoroutine(ReturnToIdle()); } break; case NormalATKComboState.NormalATK2: curATKState = NormalATKComboState.NormalATK3; if (isSinglePlay) { animHandle.CrossFade(AninormalAttack2.name); isSinglePlay = false; yield return(new WaitForSeconds(AninormalAttack2.length / 2.5f)); } else { StartCoroutine(ReturnToIdle()); } break; case NormalATKComboState.NormalATK3: curATKState = NormalATKComboState.NormalATK1; if (isSinglePlay) { animHandle.CrossFade(AninormalAttack3.name); isSinglePlay = false; yield return(new WaitForSeconds(AninormalAttack3.length / 2f)); } else { StartCoroutine(ReturnToIdle()); } break; default: break; } if (isSinglePlay) { animHandle.CrossFade(AninormalAttack1.name); isSinglePlay = false; yield return(new WaitForSeconds(AninormalAttack1.length)); } else { StartCoroutine(ReturnToIdle()); } break; case HeroActionState.MagicTrickA: if (isSinglePlay) { animHandle.CrossFade(AniMagicTrickA.name); isSinglePlay = false; yield return(new WaitForSeconds(AniMagicTrickA.length)); } else { StartCoroutine(ReturnToIdle()); } break; case HeroActionState.MagicTrickB: if (isSinglePlay) { animHandle.CrossFade(AniMagicTrickB.name); isSinglePlay = false; yield return(new WaitForSeconds(AniMagicTrickB.length)); } else { StartCoroutine(ReturnToIdle()); } break; default: break; } } }