Beispiel #1
0
        public override void Attack(bool jampAttack, bool specialAttack, bool _doubleDamage)
        {
            bool               shootDown          = false;
            GameObject         go                 = null;
            Proyectil          proyectil          = null;
            ProyectilInparable proyectilInparable = null;

            Proyectil.typeProyectil tipoProyectil = Proyectil.typeProyectil.Nulo;
            if (!specialAttack)
            {
                go        = poolObjectAttack.GetObject();
                proyectil = go.GetComponent <Proyectil>();
                proyectil.SetEnemy(gameObject.GetComponent <Enemy>());
                proyectil.SetDobleDamage(_doubleDamage);
                proyectil.disparadorDelProyectil = Proyectil.DisparadorDelProyectil.Enemigo;
                if (_doubleDamage)
                {
                    proyectil.damage = proyectil.damageCounterAttack;
                }
            }
            if (!GetIsDuck() && !specialAttack)
            {
                tipoProyectil = Proyectil.typeProyectil.ProyectilNormal;
                if (jampAttack)
                {
                    tipoProyectil = Proyectil.typeProyectil.ProyectilAereo;
                    shootDown     = true;
                }
                go.transform.rotation     = generadoresProyectiles.transform.rotation;
                go.transform.position     = generadoresProyectiles.transform.position;
                proyectil.posicionDisparo = Proyectil.PosicionDisparo.PosicionMedia;
            }
            else if (!specialAttack && GetIsDuck())
            {
                tipoProyectil             = Proyectil.typeProyectil.ProyectilBajo;
                go.transform.rotation     = generadorProyectilesAgachado.transform.rotation;
                go.transform.position     = generadorProyectilesAgachado.transform.position;
                proyectil.posicionDisparo = Proyectil.PosicionDisparo.PosicionBaja;
            }
            if (specialAttack)
            {
                //CAMBIAR ESTE NULO POR EL ATAQUE ESPECIAL CORRESPONDIENTE (Ya sea ProyectilParabola o AtaqueEspecial
                tipoProyectil      = Proyectil.typeProyectil.Nulo;
                go                 = poolProyectilImparable.GetObject();
                proyectilInparable = go.GetComponent <ProyectilInparable>();
                proyectilInparable.SetEnemy(gameObject.GetComponent <Enemy>());
                proyectilInparable.SetDobleDamage(_doubleDamage);
                proyectilInparable.disparadorDelProyectil = Proyectil.DisparadorDelProyectil.Enemigo;
                proyectilInparable.SetEnemy(gameObject.GetComponent <Agresivo>());
                if (_doubleDamage)
                {
                    proyectil.damage = proyectil.damageCounterAttack;
                }
                go.transform.position = GeneradorAtaqueEspecial.transform.position;
                go.transform.rotation = GeneradorAtaqueEspecial.transform.rotation;
                proyectilInparable.ShootForward();
            }
            if (!specialAttack)
            {
                proyectil.On(tipoProyectil);

                if (!shootDown)
                {
                    proyectil.ShootForward();
                }
                else
                {
                    proyectil.ShootForwardDown();
                }
            }
        }
Beispiel #2
0
        //ATAQUE EN PARABOLA.
        public void SpecialAttack(Proyectil.DisparadorDelProyectil disparador)
        {
            switch (enumsPlayers.specialAttackEquipped)
            {
            case EnumsPlayers.SpecialAttackEquipped.Default:
                if (enableSpecialAttack)
                {
                    GameObject        go        = structsPlayer.dataAttack.poolProyectilParabola.GetObject();
                    ProyectilParabola proyectil = go.GetComponent <ProyectilParabola>();
                    proyectil.SetDobleDamage(doubleDamage);
                    proyectil.disparadorDelProyectil = disparador;
                    if (doubleDamage)
                    {
                        proyectil.damage = proyectil.damage * 2;
                    }
                    if (!isDuck)
                    {
                        proyectil.TypeRoot    = 1;
                        go.transform.position = generadorProyectilesParabola.transform.position;
                    }
                    else
                    {
                        proyectil.TypeRoot    = 2;
                        go.transform.position = generadorProyectilesParabolaAgachado.transform.position;
                    }
                    switch (proyectil.TypeRoot)
                    {
                    case 1:
                        proyectil.rutaParabola_AtaqueJugador = structsPlayer.ruta;
                        break;

                    case 2:
                        proyectil.rutaParabolaAgachado_AtaqueJugador = structsPlayer.rutaAgachado;
                        break;
                    }
                    proyectil.rutaParabola_AtaqueJugador = structsPlayer.ruta;
                    proyectil.OnParabola();
                    enableSpecialAttack = false;
                    xpActual            = 0;
                }
                break;

            case EnumsPlayers.SpecialAttackEquipped.GranadaGaseosa:
                if (enableSpecialAttack)
                {
                    GameObject        go        = structsPlayer.dataAttack.poolGranadaGaseosa.GetObject();
                    ProyectilParabola proyectil = go.GetComponent <ProyectilParabola>();
                    proyectil.SetDobleDamage(doubleDamage);
                    proyectil.disparadorDelProyectil = disparador;
                    if (enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player1)
                    {
                        proyectil.SetPlayer(this);
                    }
                    else if (enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player2)
                    {
                        proyectil.SetPlayer2(this);
                    }
                    if (doubleDamage)
                    {
                        proyectil.damage = proyectil.damage * 2;
                    }
                    if (!isDuck)
                    {
                        proyectil.TypeRoot    = 1;
                        go.transform.position = generadorProyectilesParabola.transform.position;
                    }
                    else
                    {
                        proyectil.TypeRoot    = 2;
                        go.transform.position = generadorProyectilesParabolaAgachado.transform.position;
                    }
                    switch (proyectil.TypeRoot)
                    {
                    case 1:
                        proyectil.rutaParabola_AtaqueJugador = structsPlayer.ruta;
                        break;

                    case 2:
                        proyectil.rutaParabolaAgachado_AtaqueJugador = structsPlayer.rutaAgachado;
                        break;
                    }
                    proyectil.rutaParabola_AtaqueJugador = structsPlayer.ruta;
                    proyectil.OnParabola();
                    enableSpecialAttack = false;
                    xpActual            = 0;
                }
                break;

            case EnumsPlayers.SpecialAttackEquipped.DisparoDeCarga:
                if (enableSpecialAttack)
                {
                    if (!isJumping && !isDuck &&
                        enumsPlayers.movimiento != EnumsPlayers.Movimiento.Saltar &&
                        enumsPlayers.movimiento != EnumsPlayers.Movimiento.SaltoAtaque &&
                        enumsPlayers.movimiento != EnumsPlayers.Movimiento.SaltoDefensa)
                    {
                        structsPlayer.dataAttack.DisparoDeCarga.SetActive(true);
                        enableSpecialAttack = false;
                        xpActual            = 0;
                    }
                }
                break;

            case EnumsPlayers.SpecialAttackEquipped.ProyectilImparable:
                if (enableSpecialAttack)
                {
                    if (!isJumping && !isDuck &&
                        enumsPlayers.movimiento != EnumsPlayers.Movimiento.Saltar &&
                        enumsPlayers.movimiento != EnumsPlayers.Movimiento.SaltoAtaque &&
                        enumsPlayers.movimiento != EnumsPlayers.Movimiento.SaltoDefensa)
                    {
                        GameObject         go = structsPlayer.dataAttack.poolProyectilImparable.GetObject();
                        ProyectilInparable proyectilInparable = go.GetComponent <ProyectilInparable>();
                        proyectilInparable.SetEnemy(gameObject.GetComponent <Enemy>());
                        proyectilInparable.disparadorDelProyectil = Proyectil.DisparadorDelProyectil.Enemigo;
                        if (enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player1)
                        {
                            proyectilInparable.SetPlayer(gameObject.GetComponent <Player>());
                        }
                        else if (enumsPlayers.numberPlayer == EnumsPlayers.NumberPlayer.player2)
                        {
                            proyectilInparable.SetPlayer2(gameObject.GetComponent <Player>());
                        }
                        go.transform.position = generadorProyectilesAgachado.transform.position;
                        go.transform.rotation = generadorProyectilesAgachado.transform.rotation;
                        proyectilInparable.ShootForward();
                        enableSpecialAttack = false;
                        xpActual            = 0;
                    }
                }
                break;
            }
        }