public async Task AsyncPlayAndWait(CharacterBattlerAnimation characterBattlerAnimation, float speedModifier = 1f) { var state = ""; await CharacterBattler.QueueActionAndAwait(() => state = GetStateNameFromAnimation(characterBattlerAnimation)); await CharacterBattler.QueueActionAndAwait(() => { Animator.speed = speedModifier; Animator.Play(state); }); await Task.Delay(5); bool condition = false; void EvaluteCondition() { condition = Animator.GetCurrentAnimatorStateInfo(0).IsName(state); if (!condition) { Animator.speed = 1f; } } await CharacterBattler.QueueActionAndAwait(EvaluteCondition); while (condition) { await CharacterBattler.QueueActionAndAwait(EvaluteCondition); } }
public void Play(CharacterBattlerAnimation characterBattlerAnimation, bool lockTransition = false) { var state = GetStateNameFromAnimation(characterBattlerAnimation); if (lockTransition) { Animator.SetBool("CanTransition", false); } Animator.Play(state); }
public IEnumerator PlayAndWait(CharacterBattlerAnimation characterBattlerAnimation, float speedModifier = 1f) { Animator.speed = speedModifier; var state = GetStateNameFromAnimation(characterBattlerAnimation); Animator.Play(state); yield return(new WaitForEndOfFrame()); yield return(new WaitWhile(() => Animator.GetCurrentAnimatorStateInfo(0).IsName(state))); Animator.speed = 1f; }