void Tick(float deltaSec)
        {
            if (null == _player)
            {
                return;
            }

            var  specialAtkComponent = _player.specialAttackComponent;
            bool hasPerformedSpecial = false;

            if (Input.GetButtonDown("Jump"))  //Spacebar
            {
                if (specialAtkComponent.cooldownTimer > specialAtkComponent.cooldown)
                {
                    PerformSpecialAttack();
                    specialAtkComponent.cooldownTimer = 0.0f;
                    hasPerformedSpecial = true;
                }
                else
                {
                    SpecialAttackCondition param = SpecialAttackCondition.fail;
                    _specialAtkFXSequence.Next(this, ref param, SpecialAttackCondition.fail);
                }
            }

            if (!hasPerformedSpecial)
            {
                specialAtkComponent.cooldownTimer += deltaSec;
            }
        }
Exemple #2
0
        public void Step(ref SpecialAttackCondition token, Enum condition)
        {
            var soundComponent = _playerNode.soundComponent;

            switch (token)
            {
            case SpecialAttackCondition.perform:
            {
                soundComponent.audioSource.PlayOneShot(soundComponent.performClip);
            }
            break;

            case SpecialAttackCondition.fail:
            {
                if (!soundComponent.audioSource.isPlaying)
                {
                    soundComponent.audioSource.PlayOneShot(soundComponent.failClip);
                }
            }
            break;

            default:
                break;
            }
        }
        void PerformSpecialAttack()
        {
            SpecialAttackCondition param = SpecialAttackCondition.perform;

            _specialAtkFXSequence.Next(this, ref param, SpecialAttackCondition.perform);

            Vector3 distance;
            Vector3 force;

            foreach (EnemyNode node in _enemyList)
            {
                distance = node.transformComponent.transform.position -
                           _player.positionComponent.position;

                if (distance.sqrMagnitude <= _player.specialAttackComponent.sqrDistance)
                {
                    force = distance.normalized * _player.specialAttackComponent.power;
                    node.rigidBodyComponent.rigidbody.AddForce(force);
                }
            }
        }