IEnumerator WaitCloseSkill(Player player, float farFrom) { _model.position = transform.position; if (player.direction == Vector3.forward || player.direction == Vector3.back || player.direction == Vector3.left || player.direction == Vector3.right) { _model.position = transform.position - player.direction / farFrom; } else { _model.position = transform.position + player.direction / (farFrom + farFrom); } while (!animator.GetCurrentAnimatorStateInfo(0).IsTag("Sword")) { yield return(null); } player.beHit = BeHit.BeHit; buyHit = BuyHit.BuyHit; while (_gameManager.swordMin > animator.GetCurrentAnimatorStateInfo(0).normalizedTime || animator.GetCurrentAnimatorStateInfo(0).normalizedTime > _gameManager.swordMax) { yield return(null); } while (animator.GetCurrentAnimatorStateInfo(0).normalizedTime < _gameManager.swordHit) { yield return(null); } _gameManager.effectManager.SwordEffectEnemy(player, this); _soundManager.PlaySound(Sound.Sword); Damage(player); CheckDead(player); buyHit = BuyHit.Normal; while (!player.animator.GetCurrentAnimatorStateInfo(0).IsTag("Hit")) { yield return(null); } var thisTime = player.animator.GetCurrentAnimatorStateInfo(0).normalizedTime; while (player.animator.GetCurrentAnimatorStateInfo(0).normalizedTime < _gameManager.swordEndTime) { yield return(null); } _model.position = transform.position; player.beHit = BeHit.Normal; if (player.activeState == ActiveState.Dead) { AfterDead(player); } }
IEnumerator WaitRangeSkill(Player player) { transform.LookAt(player.transform); animator.SetTrigger(RangeAttack); while (!animator.GetCurrentAnimatorStateInfo(0).IsTag("Range")) { yield return(null); } player.beHit = BeHit.BeHit; buyHit = BuyHit.BuyHit; while (_gameManager.swordMin > animator.GetCurrentAnimatorStateInfo(0).normalizedTime || animator.GetCurrentAnimatorStateInfo(0).normalizedTime > _gameManager.rangeMax) { yield return(null); } _soundManager.PlaySound(Sound.EnergyGun); while (animator.GetCurrentAnimatorStateInfo(0).normalizedTime < _gameManager.rangeHit) { yield return(null); } _gameManager.effectManager.RangeEffectEnemy(player, this); Damage(player); CheckDead(player); while (!player.animator.GetCurrentAnimatorStateInfo(0).IsTag("Hit")) { yield return(null); } buyHit = BuyHit.Normal; while (player.animator.GetCurrentAnimatorStateInfo(0).normalizedTime < _gameManager.rangeEndTime) { yield return(null); } if (player.activeState != ActiveState.Dead) { player.GetComponent <CapsuleCollider>().enabled = true; } player.beHit = BeHit.Normal; if (player.activeState == ActiveState.Dead) { AfterDead(player); } }