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(); } } }
//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; } }