public void CollisionWhitProyectil(Collider2D collision)
        {
            Proyectil proyectil = collision.GetComponent <Proyectil>();

            if (proyectil.GetComponent <ProyectilInparable>() == null && proyectil.GetComponent <GranadaGaseosa>() == null)
            {
                if (player != null && !inEnemy && inPlayer)
                {
                    bool enableDamagePlayer = true;
                    if (state == StateBoxCollider.Normal)
                    {
                        if (proyectil.GetEnemy() != null)
                        {
                            if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Enemigo)
                            {
                                player.SetEnableCounterAttack(true);
                                if (player.delayCounterAttack > 0)
                                {
                                    player.delayCounterAttack = player.delayCounterAttack - Time.deltaTime;
                                    if (InputPlayerController.DeffenseButton_P1())
                                    {
                                        proyectil.gameObject.SetActive(false);
                                        player.Attack(Proyectil.DisparadorDelProyectil.Jugador1);
                                        player.delayCounterAttack = player.GetAuxDelayCounterAttack();
                                        //proyectil.timeLife = 0;
                                        //enableDamagePlayer = false;
                                        proyectil.AnimationHit();
                                    }
                                }
                                if (player.delayCounterAttack <= 0 && proyectil.timeLife <= 0 && enableDamagePlayer || !ZonaContraAtaque)
                                {
                                    if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetEnemy() != null)
                                    {
                                        proyectil.GetEnemy().SetXpActual(proyectil.GetEnemy().GetXpActual() + proyectil.GetEnemy().xpForHit);
                                        player.PD.lifePlayer = player.PD.lifePlayer - proyectil.damage;
                                    }
                                    player.spritePlayerActual.ActualSprite = SpritePlayer.SpriteActual.RecibirDanio;
                                    if (!ZonaContraAtaque)
                                    {
                                        //proyectil.timeLife = 0;
                                        //proyectil.gameObject.SetActive(false);
                                        proyectil.AnimationHit();
                                    }
                                }
                                else if (player.delayCounterAttack <= 0 && proyectil.timeLife > 0 && enableDamagePlayer || !ZonaContraAtaque)
                                {
                                    proyectil.GetEnemy().SetXpActual(proyectil.GetEnemy().GetXpActual() + proyectil.GetEnemy().xpForHit);
                                    player.delayCounterAttack = player.GetAuxDelayCounterAttack();
                                    player.SetEnableCounterAttack(false);
                                    player.PD.lifePlayer = player.PD.lifePlayer - proyectil.damage;
                                    player.spritePlayerActual.ActualSprite = SpritePlayer.SpriteActual.RecibirDanio;
                                    //proyectil.timeLife = 0;
                                    //proyectil.gameObject.SetActive(false);
                                    proyectil.AnimationHit();
                                }
                            }
                        }
                        if (proyectil.GetPlayer() != null)
                        {
                            if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Jugador1 ||
                                player.enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player2)
                            {
                                //AUMENTO XP PARA EL ATAQUE ESPECIAL
                                if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetPlayer() != null)
                                {
                                    proyectil.GetPlayer().SetXpActual(proyectil.GetPlayer().GetXpActual() + proyectil.GetPlayer().xpForHit);
                                    proyectil.GetPlayer().PD.score = proyectil.GetPlayer().PD.score + proyectil.GetPlayer().PD.scoreForHit;
                                }
                                player.SetEnableCounterAttack(true);
                                if (player.delayCounterAttack > 0)
                                {
                                    player.delayCounterAttack = player.delayCounterAttack - Time.deltaTime;
                                    if (InputPlayerController.DeffenseButton_P2())
                                    {
                                        player.Attack(Proyectil.DisparadorDelProyectil.Jugador2);
                                        player.delayCounterAttack = player.GetAuxDelayCounterAttack();
                                        enableDamagePlayer        = false;
                                        //proyectil.timeLife = 0;
                                        proyectil.AnimationHit();
                                    }
                                }
                                if (player.delayCounterAttack <= 0 && proyectil.timeLife <= 0 && enableDamagePlayer)
                                {
                                    player.PD.lifePlayer = player.PD.lifePlayer - proyectil.damage;
                                    player.spritePlayerActual.ActualSprite = SpritePlayer.SpriteActual.RecibirDanio;
                                }
                                else if (player.delayCounterAttack <= 0 && proyectil.timeLife > 0 && enableDamagePlayer)
                                {
                                    player.delayCounterAttack = player.GetAuxDelayCounterAttack();
                                    player.SetEnableCounterAttack(false);
                                    player.PD.lifePlayer = player.PD.lifePlayer - proyectil.damage;
                                    player.spritePlayerActual.ActualSprite = SpritePlayer.SpriteActual.RecibirDanio;
                                    //proyectil.timeLife = 0;
                                    //proyectil.gameObject.SetActive(false);
                                    proyectil.AnimationHit();
                                }
                            }
                        }
                        if (proyectil.GetPlayer2() != null)
                        {
                            if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Jugador2 ||
                                player.enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player1 ||
                                proyectil.GetPlayer2() != null)
                            {
                                //AUMENTO XP PARA EL ATAQUE ESPECIAL
                                if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetPlayer2() != null)
                                {
                                    proyectil.GetPlayer2().SetXpActual(proyectil.GetPlayer2().GetXpActual() + proyectil.GetPlayer2().xpForHit);
                                    proyectil.GetPlayer2().PD.score = proyectil.GetPlayer2().PD.score + proyectil.GetPlayer2().PD.scoreForHit;
                                }
                                player.SetEnableCounterAttack(true);
                                if (player.delayCounterAttack > 0)
                                {
                                    player.delayCounterAttack = player.delayCounterAttack - Time.deltaTime;
                                    if (InputPlayerController.DeffenseButton_P1())
                                    {
                                        player.Attack(Proyectil.DisparadorDelProyectil.Jugador1);
                                        player.delayCounterAttack = player.GetAuxDelayCounterAttack();
                                        enableDamagePlayer        = false;
                                        //proyectil.timeLife = 0;
                                        proyectil.AnimationHit();
                                    }
                                }
                                if (player.delayCounterAttack <= 0 && proyectil.timeLife <= 0 && enableDamagePlayer)
                                {
                                    player.PD.lifePlayer = player.PD.lifePlayer - proyectil.damage;
                                    player.spritePlayerActual.ActualSprite = SpritePlayer.SpriteActual.RecibirDanio;
                                }
                                else if (player.delayCounterAttack <= 0 && proyectil.timeLife > 0 && enableDamagePlayer)
                                {
                                    player.delayCounterAttack = player.GetAuxDelayCounterAttack();
                                    player.SetEnableCounterAttack(false);
                                    player.PD.lifePlayer = player.PD.lifePlayer - proyectil.damage;
                                    player.spritePlayerActual.ActualSprite = SpritePlayer.SpriteActual.RecibirDanio;
                                    //proyectil.timeLife = 0;
                                    //proyectil.gameObject.SetActive(false);
                                    //proyectil.GetPoolObject().Recycle();
                                    proyectil.AnimationHit();
                                }
                            }
                        }
                    }
                    else if (state == StateBoxCollider.Defendido)
                    {
                        Player_PvP player_PvP = player.gameObject.GetComponent <Player_PvP>();
                        float      realDamage;
                        if (proyectil.GetPlayer() != null)
                        {
                            if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Jugador1 ||
                                player.enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player2)
                            {
                                //AUMENTO XP PARA EL ATAQUE ESPECIAL
                                //SI SE DEFIENDE CARGA LA MITAD DE LA BARRA DEL ATAQUE ESPECIAL.
                                if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetPlayer() != null)
                                {
                                    proyectil.GetPlayer().SetXpActual(proyectil.GetPlayer().GetXpActual() + (proyectil.GetPlayer().xpForHit / 2));
                                    proyectil.GetPlayer().PD.score = proyectil.GetPlayer().PD.score + (proyectil.GetPlayer().PD.scoreForHit / 2);
                                }
                                realDamage           = proyectil.damage - player.pointsDeffence;
                                player.PD.lifePlayer = player.PD.lifePlayer - realDamage;
                                proyectil.damage     = proyectil.GetAuxDamage();
                                //proyectil.timeLife = 0;
                                //proyectil.GetPoolObject().Recycle();
                                //proyectil.gameObject.SetActive(false);
                                proyectil.AnimationHit();
                            }
                        }
                        if (player_PvP != null)
                        {
                            //Debug.Log(proyectil.GetEnemy());
                            if (proyectil.GetPlayer2() != null)
                            {
                                if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Jugador2 ||
                                    player.enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player1)
                                {
                                    //AUMENTO XP PARA EL ATAQUE ESPECIAL
                                    //SI SE DEFIENDE CARGA LA MITAD DE LA BARRA DEL ATAQUE ESPECIAL.
                                    if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetPlayer2() != null)
                                    {
                                        proyectil.GetPlayer2().SetXpActual(proyectil.GetPlayer2().GetXpActual() + (proyectil.GetPlayer2().xpForHit / 2));
                                        proyectil.GetPlayer2().PD.score = proyectil.GetPlayer2().PD.score + (proyectil.GetPlayer2().PD.scoreForHit / 2);
                                    }
                                    realDamage           = proyectil.damage - player.pointsDeffence;
                                    player.PD.lifePlayer = player.PD.lifePlayer - realDamage;
                                    proyectil.damage     = proyectil.GetAuxDamage();
                                    //proyectil.timeLife = 0;
                                    //proyectil.GetPoolObject().Recycle();
                                    //proyectil.gameObject.SetActive(false);
                                    proyectil.AnimationHit();
                                }
                            }
                            if (player_PvP.playerSelected == Player_PvP.PlayerSelected.Defensivo)
                            {
                                switch (player_PvP.playerState)
                                {
                                case Player_PvP.State.Defendido:
                                    player.spritePlayerActual.ActualSprite = SpritePlayer.SpriteActual.ContraAtaqueParado;
                                    if (player_PvP.playerActual == Player_PvP.Player.player1)
                                    {
                                        player.Attack(Proyectil.DisparadorDelProyectil.Jugador1);
                                    }
                                    else if (player_PvP.playerActual == Player_PvP.Player.player2)
                                    {
                                        player.Attack(Proyectil.DisparadorDelProyectil.Jugador2);
                                    }
                                    realDamage           = proyectil.damage - player.pointsDeffence;
                                    player.PD.lifePlayer = player.PD.lifePlayer - realDamage;
                                    proyectil.damage     = proyectil.GetAuxDamage();
                                    //proyectil.GetPoolObject().Recycle();
                                    //proyectil.gameObject.SetActive(false);
                                    //proyectil.timeLife = 0;
                                    proyectil.AnimationHit();
                                    break;

                                default:
                                    if (proyectil.GetPlayer() != null)
                                    {
                                        if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Jugador1 ||
                                            player.enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player2)
                                        {
                                            //AUMENTO XP PARA EL ATAQUE ESPECIAL
                                            //SI SE DEFIENDE CARGA LA MITAD DE LA BARRA DEL ATAQUE ESPECIAL.
                                            if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetPlayer() != null)
                                            {
                                                proyectil.GetPlayer().SetXpActual(proyectil.GetPlayer().GetXpActual() + (proyectil.GetPlayer().xpForHit / 2));
                                                proyectil.GetPlayer().PD.score = proyectil.GetPlayer().PD.score + (proyectil.GetPlayer().PD.scoreForHit / 2);
                                            }
                                        }
                                    }
                                    else if (proyectil.GetPlayer2() != null)
                                    {
                                        if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Jugador2 ||
                                            player.enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player1)
                                        {
                                            //AUMENTO XP PARA EL ATAQUE ESPECIAL
                                            //SI SE DEFIENDE CARGA LA MITAD DE LA BARRA DEL ATAQUE ESPECIAL.
                                            if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetPlayer2() != null)
                                            {
                                                proyectil.GetPlayer2().SetXpActual(proyectil.GetPlayer2().GetXpActual() + (proyectil.GetPlayer2().xpForHit / 2));
                                                proyectil.GetPlayer2().PD.score = proyectil.GetPlayer2().PD.score + (proyectil.GetPlayer2().PD.scoreForHit / 2);
                                            }
                                        }
                                    }
                                    realDamage           = proyectil.damage - player.pointsDeffence;
                                    player.PD.lifePlayer = player.PD.lifePlayer - realDamage;
                                    proyectil.damage     = proyectil.GetAuxDamage();
                                    //proyectil.timeLife = 0;
                                    //proyectil.GetPoolObject().Recycle();
                                    //proyectil.gameObject.SetActive(false);
                                    proyectil.AnimationHit();
                                    break;
                                }
                            }
                            //Debug.Log(proyectil.GetEnemy());
                            if (proyectil.GetEnemy() != null)
                            {
                                //Debug.Log("A LA DEFENSA");
                                proyectil.GetEnemy().SetXpActual(proyectil.GetEnemy().GetXpActual() + (proyectil.GetEnemy().xpForHit / 2));
                                realDamage           = proyectil.damage - player.pointsDeffence;
                                player.PD.lifePlayer = player.PD.lifePlayer - realDamage;
                                proyectil.damage     = proyectil.GetAuxDamage();
                                //proyectil.timeLife = 0;
                                //proyectil.GetPoolObject().Recycle();
                                //proyectil.gameObject.SetActive(false);
                                proyectil.AnimationHit();
                            }
                        }
                    }
                }
                else if (enemy != null && !inPlayer && inEnemy)
                {
                    bool enableDamagePlayer = true;
                    //Debug.Log(disparadorDelProyectil);
                    if (state == StateBoxCollider.Normal)
                    {
                        if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Jugador1)
                        {
                            if (enemy.enumsEnemy.GetMovement() != EnumsEnemy.Movimiento.MoveToPointCombat && enemy.enumsEnemy.GetMovement() != EnumsEnemy.Movimiento.MoveToPointDeath)
                            {
                                enemy.spriteEnemy.ActualSprite = SpriteEnemy.SpriteActual.RecibirDanio;
                                enemy.life = enemy.life - proyectil.damage;

                                //AUMENTO XP PARA EL ATAQUE ESPECIAL
                                if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetPlayer() != null)
                                {
                                    proyectil.GetPlayer().SetXpActual(proyectil.GetPlayer().GetXpActual() + proyectil.GetPlayer().xpForHit);
                                    proyectil.GetPlayer().PD.score = proyectil.GetPlayer().PD.score + proyectil.GetPlayer().PD.scoreForHit;
                                }
                                //proyectil.timeLife = 0;
                                //proyectil.gameObject.SetActive(false);
                                //proyectil.GetPoolObject().Recycle();
                                proyectil.AnimationHit();
                            }
                        }
                    }
                    else if (state == StateBoxCollider.Defendido)
                    {
                        if (proyectil.disparadorDelProyectil == Proyectil.DisparadorDelProyectil.Jugador1)
                        {
                            //AUMENTO XP PARA EL ATAQUE ESPECIAL
                            //SI SE DEFIENDE CARGA LA MITAD DE LA BARRA DEL ATAQUE ESPECIAL.
                            if (proyectil.gameObject.activeSelf && gameObject.activeSelf && proyectil != null && proyectil.GetPlayer() != null)
                            {
                                proyectil.GetPlayer().SetXpActual(proyectil.GetPlayer().GetXpActual() + (proyectil.GetPlayer().xpForHit / 2));
                                proyectil.GetPlayer().PD.score = proyectil.GetPlayer().PD.score + (proyectil.GetPlayer().PD.scoreForHit / 2);
                            }
                            if (enemy.enumsEnemy.typeEnemy != EnumsEnemy.TiposDeEnemigo.Defensivo)
                            {
                                float realDamage = proyectil.damage - enemy.pointsDeffence;
                                enemy.life = enemy.life - realDamage;
                            }
                            else
                            {
                                if (enemy.enumsEnemy.GetMovement() == EnumsEnemy.Movimiento.DefensaEnElLugar)
                                {
                                    //MECANICA DEFENSIVA DEL ENEMIGO DEFENSIVO//
                                    if (enemy.GetComponent <Defensivo>() != null)
                                    {
                                        Defensivo enemyDeffended = enemy.GetComponent <Defensivo>();
                                        if (enemyDeffended.GetStateDeffence() == Defensivo.StateDeffence.CounterAttackDeffense)
                                        {
                                            enemy.spriteEnemy.ActualSprite = SpriteEnemy.SpriteActual.ContraAtaque;
                                            //enemy.Attack(false, false, true, cuadrilla);
                                            enemy.Attack(false, false, true, proyectil);
                                            enemyDeffended.SetStateDeffense(Defensivo.StateDeffence.Nulo);
                                            enemyDeffended.delayStateCounterAttackDeffense = 0;
                                            enemyDeffended.delayStateDeffense = enemyDeffended.GetAuxDelayStateDeffense();
                                            enemyDeffended.delayVulnerable    = enemyDeffended.GetAuxDelayVulnerable();
                                            if (enemy.damageCounterAttack)
                                            {
                                                float realDamage = proyectil.damage - enemy.pointsDeffence;
                                                enemy.life = enemy.life - realDamage;
                                            }
                                        }
                                        else if (enemyDeffended.GetStateDeffence() == Defensivo.StateDeffence.NormalDeffense)
                                        {
                                            if (enemy.damageCounterAttack)
                                            {
                                                float realDamage = proyectil.damage - enemy.pointsDeffence;
                                                enemy.life = enemy.life - realDamage;
                                            }
                                        }
                                    }
                                    //-----------------------------------------//
                                }
                                else
                                {
                                    enemy.life = enemy.life - proyectil.damage;
                                }
                            }
                            //proyectil.timeLife = 0;
                            //proyectil.GetPoolObject().Recycle();
                            //proyectil.gameObject.SetActive(false);
                            proyectil.AnimationHit();
                        }
                    }
                }
            }
        }