public void SetAnimacao(float distanciamentoCartasMaximo) { // formula que leva em conta um valor de distancia do ponto 0 qualquer (distanciamentoDeCartaMaximo), e a quantidade de vezes // em que essa distancia é dividida igualmente (Quantidade de cartas). Devolvendo a constante de distanciamento (Levando em conta // a imparidade ou paridade da divisão. //constante de distanciamento distanciamentoCartasMaximo = (cartas.Count < 7) ? distanciamentoCartasMaximo : 175; float angulacaoConst = cartas.Count % 2 == 0f ? distanciamentoCartasMaximo / (float)(cartas.Count / 2) : distanciamentoCartasMaximo / (float)((cartas.Count - 1) / 2); //distancia inicial float concatenador = -distanciamentoCartasMaximo; int index = 0; if (cartas.Count == 1) { concatenador = 0; } foreach (var obj in cartas) { CartaNaMesa atributos = obj.transform.GetChild(0).GetComponent <CartaNaMesa>(); //setando ID da carta em relação ao baralho atributos.PosicaoBaralho = index; // Setando posição da carta final e inicial atributos.PosicaoInicial = obj.transform.localPosition; atributos.PosicaoFinal = new Vector2(concatenador * latitude, altitude); concatenador += angulacaoConst; index++; } angularBaralho = true; x = 0; }
void PuxarCartaMesa() { AtaqueNoInimigo = CartaAtual; CartaNaMesa refCard = AtaqueNoInimigo.GetComponent <CartaNaMesa>(); if (refCard.PodeAtacar) { seta = Instantiate(Seta); seta.transform.SetParent(transform.GetChild(4), false); seta.transform.localPosition = CartaAtual.transform.parent.localPosition - new Vector3(10, 80); } }
//posicao atacar é o index do atacador na mesa do baralho inimigo e posicao inimigo //é a posicao da carta do player que sera atacada public void AtacarCarta(int posicaoAtacar, int posicaoInimigo) { MesaBehaviour atacante = transform.GetChild(2).GetComponent <MesaBehaviour>(); MesaBehaviour defensor = transform.GetChild(1).GetComponent <MesaBehaviour>(); //if redundante if (atacante.cartas.Count > 0 && defensor.cartas.Count > 0) { CartaNaMesa refCard = atacante.cartas[posicaoAtacar].transform.GetChild(0).GetComponent <CartaNaMesa>(); CartaNaMesa enemyRefCard = defensor.cartas[posicaoInimigo].transform.GetChild(0).GetComponent <CartaNaMesa>(); refCard.QuantidadeAtaque--; // passiva do inimigo quando atacado se inicia primeiro do que quando a carta ataca primeiro switch (enemyRefCard.AtivarPassivaQuando) { case Evento.CartaRecebeuDano: if (enemyRefCard.Alvo != AlvoPassiva.CartaQueAtacou) { this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(enemyRefCard.Passiva, enemyRefCard.Alvo, false, defensor.cartas[posicaoInimigo].gameObject); } else { this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(enemyRefCard.Passiva, atacante.cartas[posicaoAtacar].gameObject, false, defensor.cartas[posicaoInimigo].gameObject); } break; } switch (refCard.AtivarPassivaQuando) { case Evento.CartaAtaque: if (!(refCard.Alvo == AlvoPassiva.CartaAtacada)) { this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(refCard.Passiva, refCard.Alvo, true, atacante.cartas[posicaoAtacar].gameObject); } else { this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(refCard.Passiva, defensor.cartas[posicaoInimigo].gameObject, true, atacante.cartas[posicaoAtacar].gameObject); } // nao testei esse else break; } atacante.cartas[posicaoAtacar].transform.GetComponent <Animator>().SetTrigger("Atacar"); StartCoroutine(DarDano(defensor.cartas[posicaoInimigo], atacante.cartas[posicaoAtacar])); } }
private void Angular() { //função y = -x * x + 2 * x; //velocidade da animação x += (velocidadeAnimacao * Time.deltaTime); //dado o fim da animação if (x >= 1) { angularBaralho = false; return; } //animando todas as cartas da mão //por meio do metodo vector.lerp foreach (var obj in cartas) { CartaNaMesa atributos = obj.transform.GetChild(0).GetComponent <CartaNaMesa>(); obj.transform.localPosition = Vector2.Lerp(atributos.PosicaoInicial, atributos.PosicaoFinal, y); } }
public void CriarCartaInicio(float ataq, float def, Sprite img, Evento ev, PassivaComulativa ef, AlvoPassiva alv, AudioClip[] aoMorrer) { GameObject objCarta = Instantiate(carta); objCarta.transform.localPosition = new Vector2(0, -20); objCarta.GetComponent <Image>().raycastTarget = false; CartaNaMesa obj = objCarta.transform.GetChild(0).GetComponent <CartaNaMesa>(); objCarta.transform.SetParent(transform, false); obj.definirComeco(ataq, def, img, ef, ev, alv); obj.AoMorrer = aoMorrer; cartas.Add(objCarta); distanciamentoCartasMaximo += 20; //dispersar cartas na mesa SetAnimacao(distanciamentoCartasMaximo); switch (obj.AtivarPassivaQuando) { case Evento.CartaIniciada: controller.rodandoPassivasCampoProprio = !(obj.name == "CartaNaMesaInimigo"); controller.RealizarPassivaEm(obj.Passiva, obj.Alvo, (objCarta.tag == "Player"), objCarta); break; } }
void Atacar() { foreach (var obj in resultados) { // carta efeito if (isOnEffect && (obj.gameObject.name == "CartaNaMesaInimigo" || obj.gameObject.name == "CartaNaMesa")) { int barra = goldPlayer.text.IndexOf('/'); goldPlayer.text = (int.Parse(goldPlayer.text.Substring(0, barra)) - cartaEfeito.Valor).ToString() + "/" + EventControllerBehaviour.ouroMaximo; //playerid.CmdAtualizarGold(goldPlayer.text); this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(cartaEfeito.Passiva, obj.gameObject.transform.parent.gameObject, true, null); //playerid.CmdTirarCartaBaralho(cartaEfeito.PosicaoBaralho); //carta ativo não referenciam objetos realizadores // playerid.CmdEfeitoRealizado(!(obj.gameObject.name == "CartaNaMesa"),obj.gameObject.GetComponent<CartaNaMesa>().PosicaoBaralho,cartaEfeito.Passiva.quantidade,(int)cartaEfeito.Passiva.efeito); SetRaycast(true); isOnEffect = false; // cartaEfeito = null; } //atacar carta if (obj.gameObject.name == "CartaNaMesaInimigo" && AtaqueNoInimigo) { CartaNaMesa refCard = AtaqueNoInimigo.GetComponent <CartaNaMesa>(); if (refCard.QuantidadeAtaque > 0) { //playerid.CmdAtacarCarta(refCard.PosicaoBaralho,obj.gameObject.GetComponent<CartaNaMesa>().PosicaoBaralho); AtaqueNoInimigo.transform.parent.GetComponent <Animator>().SetTrigger("Atacar"); GameObject inimigo = obj.gameObject.transform.parent.gameObject; CartaNaMesa enemyRefCard = obj.gameObject.transform.GetComponent <CartaNaMesa>(); // passiva do inimigo quando atacado se inicia primeiro do que quando a carta ataca primeiro switch (enemyRefCard.AtivarPassivaQuando) { case Evento.CartaRecebeuDano: if (enemyRefCard.Alvo != AlvoPassiva.CartaQueAtacou) { this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(enemyRefCard.Passiva, enemyRefCard.Alvo, false, inimigo); } else { this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(enemyRefCard.Passiva, AtaqueNoInimigo.transform.parent.gameObject, false, inimigo); } break; } switch (refCard.AtivarPassivaQuando) { case Evento.CartaAtaque: if (refCard.Alvo != AlvoPassiva.CartaAtacada) { this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(refCard.Passiva, refCard.Alvo, true, AtaqueNoInimigo.transform.parent.gameObject); } else { this.gameObject.GetComponent <EventControllerBehaviour>().RealizarPassivaEm(refCard.Passiva, inimigo, true, AtaqueNoInimigo.transform.parent.gameObject); } break; } refCard.QuantidadeAtaque--; StartCoroutine(DarDano(obj.gameObject)); } break; } //atacar player inimigo else if (obj.gameObject.name == "CampoInimigo" && obj.gameObject.GetComponent <MesaBehaviour>().cartas.Count == 0 && AtaqueNoInimigo) { CartaNaMesa refCard = AtaqueNoInimigo.GetComponent <CartaNaMesa>(); if (refCard.QuantidadeAtaque > 0) { AtaqueNoInimigo.transform.parent.GetComponent <Animator>().SetTrigger("Atacar"); //playerid.CmdAtacarPlayer(refCard.PosicaoBaralho); refCard.QuantidadeAtaque--; StartCoroutine(DarDanoInimigo(obj.gameObject)); } } } }