示例#1
0
        IEnumerator WaitRangeSkill(Enemy enemy)
        {
            CloseCamera();

            animator.SetTrigger(RangeAttack);
            while (!animator.GetCurrentAnimatorStateInfo(0).IsTag("Range"))
            {
                yield return(null);
            }

            _gameManager.somethingOn = true;

            enemy.getHit = GetHit.GetHit;
            giveHit      = GiveHit.normal;

            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.RangeEffectPlayer(enemy, this);
            Damage(enemy);
            CheckDead(enemy);
            giveHit = GiveHit.normal;

            var victory = _gameManager.CheckVictory();

            if (!victory)
            {
                _gameManager.somethingOn = false;
                _gameManager.NextPlayer();
            }

            NonCloseCamera();

            while (!enemy.animator.GetCurrentAnimatorStateInfo(0).IsTag("Hit"))
            {
                yield return(null);
            }

            while (enemy.animator.GetCurrentAnimatorStateInfo(0).normalizedTime < _gameManager.rangeEndTime)
            {
                yield return(null);
            }

            if (enemy.activeState != ActiveState.Dead)
            {
                enemy.GetComponent <CapsuleCollider>().enabled = true;
            }

            if (enemy.activeState == ActiveState.Dead)
            {
                AfterDead(enemy);
            }

            enemy.getHit = GetHit.normal;
            if (!victory)
            {
                CheckPlayerTurn();
            }
        }
示例#2
0
        IEnumerator WaitCloseSkill(Enemy enemy, float farFromCharacter)
        {
            enemy.GetComponent <CapsuleCollider>().enabled = false;
            _gameManager.somethingOn = true;
            enemy.getHit             = GetHit.GetHit;
            giveHit = GiveHit.GiveHit;

            if (enemy.direction == Vector3.forward ||
                enemy.direction == Vector3.back ||
                enemy.direction == Vector3.left ||
                enemy.direction == Vector3.right)
            {
                _model.position = this.transform.position - enemy.direction / farFromCharacter;
            }
            else
            {
                _model.position = this.transform.position + enemy.direction / (farFromCharacter + farFromCharacter);
            }

            while (!animator.GetCurrentAnimatorStateInfo(0).IsTag("Sword"))
            {
                yield return(null);
            }

            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.SwordEffectPlayer(enemy, this);
            _soundManager.PlaySound(Sound.Sword);
            Damage(enemy);
            CheckDead(enemy);
            giveHit = GiveHit.normal;

            while (!enemy.animator.GetCurrentAnimatorStateInfo(0).IsTag("Hit"))
            {
                yield return(null);
            }

            while (enemy.animator.GetCurrentAnimatorStateInfo(0).normalizedTime < _gameManager.swordEndTime)
            {
                yield return(null);
            }

            if (enemy.activeState != ActiveState.Dead)
            {
                enemy.GetComponent <CapsuleCollider>().enabled = true;
            }

            if (enemy.activeState == ActiveState.Dead)
            {
                AfterDead(enemy);
            }

            enemy.getHit = GetHit.normal;
        }