private Animotion SimpleAttackToCombineAnimotion(Animator attackerAnimator, List <Animator> damagedAnimator)
        {
            List <Animotion> motions = new List <Animotion>();
            // PLAY ATTACK ANIMATION
            Animotion motionAttack = new AttackAnimatedAnimotion(this, 1, attackerAnimator);

            motions.Add(motionAttack);
            if (GameSoundManager.Instance != null && GameSoundManager.Instance.audioSource != null)
            {
                AudioSourceParameter audioParameter = new AudioSourceParameter(true);
                // ATTACK SOUND
                Animotion motionAttackSound = new SoundAnimotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[0], audioParameter);
                motions.Add(motionAttackSound);
                // DAMAGE SOUND
                Animotion motionDamageSound = new SoundAnimotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[2], audioParameter);
                motions.Add(motionDamageSound);
            }

            // PLAY DAMAGE ANIMATION FOR ALL THE ENEMIES
            for (int i = 0; i < damagedAnimator.Count; i++)
            {
                Animotion motionDamage = new DamageAnimatedAnimotion(this, 1, damagedAnimator[i]);
                motions.Add(motionDamage);
            }
            CombineAnimotion combineAttackMotion = new CombineAnimotion(this, 1, motions);

            return(combineAttackMotion);
        }
        private Animotion SimpleAttackToCombineWithShieldAnimotion(Animator attackerAnimator, List <Animator> damagedAnimator)
        {
            List <Animotion>          motions            = new List <Animotion>();
            List <ConfigurableMotion> configureAnimotion = new List <ConfigurableMotion>();
            // PLAY ATTACK ANIMATION
            Animotion motionAttack = new AttackAnimatedAnimotion(this, 1, attackerAnimator);

            motions.Add(motionAttack);
            if (GameSoundManager.Instance != null && GameSoundManager.Instance.audioSource != null)
            {
                AudioSourceParameter audioParameter = new AudioSourceParameter(true);
                // ATTACK SOUND
                Animotion motionAttackSound = new SoundAnimotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[0], audioParameter);
                motions.Add(motionAttackSound);
                // DAMAGE SOUND
                Animotion motionDamageSound = new SoundAnimotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[2], audioParameter);
                motions.Add(motionDamageSound);
            }

            // PLAY DAMAGE ANIMATION FOR ALL THE ENEMIES
            for (int i = 0; i < damagedAnimator.Count; i++)
            {
                // PLAY DAMAGE ANIMATION
                Animotion motionDamage = new DamageAnimatedAnimotion(this, 1, damagedAnimator[i]);
                motions.Add(motionDamage);

                // CREAMOS EL SHIELD
                GameObject shield = Instantiate(shieldPrefab, damagedAnimator[i].transform.position, Quaternion.identity);
                shield.SetActive(true);

                List <Animotion> shieldMotions      = new List <Animotion>();
                Animotion        motionShieldDamage = new ShieldAnimatedAnimotion(this, 1, shield.GetComponent <Animator>());
                shieldMotions.Add(motionShieldDamage);

                GameObjectDestroyConfigureContainer goDestroyContainer = new GameObjectDestroyConfigureContainer(shield);
                ConfigureAnimotion destroyGOConfigAnimotion            = new ConfigureAnimotion(goDestroyContainer, 2);
                configureAnimotion.Add(destroyGOConfigAnimotion);

                CombineAnimotion combineShieldMotion = new CombineAnimotion(this, 1, shieldMotions, configureAnimotion);
                motions.Add(combineShieldMotion);
            }

            CombineAnimotion combineAttackMotion = new CombineAnimotion(this, 1, motions);

            return(combineAttackMotion);
        }
        private Animotion SimpleDamageAnimotion(Animator damagedAnimator)
        {
            List <Animotion> motions = new List <Animotion>();

            if (GameSoundManager.Instance != null && GameSoundManager.Instance.audioSource != null)
            {
                AudioSourceParameter audioParameter = new AudioSourceParameter(true);
                // DAMAGE SOUND
                Animotion motionDamageSound = new SoundAnimotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[2], audioParameter);
                motions.Add(motionDamageSound);
            }
            // PLAY DAMAGE ANIMATION
            Animotion motionDamage = new DamageAnimatedAnimotion(this, 1, damagedAnimator);

            motions.Add(motionDamage);

            CombineAnimotion combineAttackMotion = new CombineAnimotion(this, 1, motions);

            return(combineAttackMotion);
        }