void Update()
    {
        atributosPlayer.setFase(gerenteFase.getFase());
        atributosAdversario.setFase(gerenteFase.getFase());

        //for(int i=0;i<nomeAcoes.Length;i++)
        //{
        //    nomeAcoes[i].GetComponent<TooltipObserver>().associaAcao(atributosPlayer.getAcao(i));
        //}
        vidaPlayerTexto.text           = "" + (int)(atributosPlayer.getVidaAtual());
        vidaAdversarioTexto.text       = "" + (int)(atributosAdversario.getVidaAtual());
        VidaPlayer.value               = Mathf.Lerp(VidaPlayer.value, atributosPlayer.getVidaAtual(), velocidadeVida * Time.deltaTime);
        VidaAdversario.value           = Mathf.Lerp(VidaAdversario.value, atributosAdversario.getVidaAtual(), velocidadeVida * Time.deltaTime);
        barraArgumentoPlayer.value     = Mathf.Lerp(barraArgumentoPlayer.value, atributosPlayer.getArgumentos(), velocidadeVida * Time.deltaTime);
        barraArgumentoAdversario.value = Mathf.Lerp(barraArgumentoAdversario.value, atributosAdversario.getArgumentos(), velocidadeVida * Time.deltaTime);
        sliderAlinhamento.value        = (int)alinhamentoPlayer;
        //CorAtual= Adversario.transform.GetChild(0).GetComponent<SpriteRenderer>().color;
    }
    private void aplicaDano(CombateAtributos atributosAtacante, CombateAcao golpe, CombateAtributos atributosAlvo)
    {
        int   ataque             = atributosAtacante.atributos.dano;
        float multiplicadorGolpe = golpe.dano / 100;
        int   danoResultante;

        if (golpe.tipo != CombateAcao.tipoDano.Neutro)
        {
            //A: ajusta multiplicador conforme tipo
            if (atributosAlvo.isVulneravel((int)golpe.tipo))
            {
                multiplicadorGolpe *= multiplicadorEfetivo + (float)bonusAlinhamento(golpe);

                //A: texto de feedback
                efetividade.color = Color.green;
                efetividade.text  = "super efetivo!";
            }
            else if (atributosAlvo.isResistente((int)golpe.tipo))
            {
                multiplicadorGolpe = multiplicadorGolpe * multiplicadorResistente;

                //A: texto de feedback
                efetividade.color = Color.red;
                efetividade.text  = "pouco efetivo...";
            }
        }
        //A: implementacao da postura Defensivo Fortifica, aumentando o dano
        if (atributosAlvo.atributos.postura == CombateUnidade.posturaUnidade.defensivoFortalece)
        {
            multiplicadorGolpe *= multiplicadorFortalecimento;
            atributosAdversario.setAuxiliar(0);
        }
        danoResultante = (int)((ataque + danoBonusArgumento(atributosAtacante)) * multiplicadorGolpe - (atributosAlvo.atributos.defesa + defesaBonusArgumento(atributosAlvo)));

        //EnemyBattle.SetTrigger("GetHit");
        atacAudio.Play();

        if (atributosAtacante == atributosPlayer)
        {
            EnemyBattle.SetTrigger("GetHit");
            BrunoBattle.SetTrigger("Porrada");
        }
        else
        {
            PlayerBattle.SetTrigger("Dano");
        }

        //A: implementação da postura Reage a Agressivo
        if (atributosAlvo.atributos.postura == CombateUnidade.posturaUnidade.reageAgressivo && golpe.tipo == CombateAcao.tipoDano.Agressivo)
        {
            aplicaDano(atributosAlvo, atributosAlvo.getAcao(0), atributosAtacante);
        }

        //A: implementação da postura Defensivo Fortalece, salva dano levado
        if (atributosAlvo.atributos.postura == CombateUnidade.posturaUnidade.defensivoFortalece && golpe.tipo == CombateAcao.tipoDano.Manipulador)
        {
            atributosAdversario.setAuxiliar(atributosAdversario.getAuxiliar() + 1);
        }

        //A: Garante dano minimo = 1
        if (danoResultante < 1)
        {
            danoResultante = 1;
        }

        //A: implementação da postura ignoraManipulador
        if (atributosAlvo.atributos.postura == CombateUnidade.posturaUnidade.ignoraManipulador && golpe.tipo == CombateAcao.tipoDano.Manipulador)
        {
            danoResultante = 0;

            efetividade.color = Color.blue;
            efetividade.text  = "imune";
        }

        //A: implementação de argumentos de roubo de vida e evasão
        for (int i = 0; i < argumentosPlayer.Length; i++)
        {
            if (argumentosPlayer[i] != null)
            {
                if (argumentosPlayer[i].habilidade == CombateArgumento.tipoArgumento.RoubaVida && atributosAtacante == atributosPlayer)
                {
                    atributosPlayer.curar((int)argumentosPlayer[i].valor * danoResultante);
                }
                else if (argumentosPlayer[i].habilidade == CombateArgumento.tipoArgumento.Evasao && atributosAlvo == atributosPlayer)
                {
                    danoResultante = 0;
                    argumentosPlayer[i].valor--;
                    if (argumentosPlayer[i].valor < 1)
                    {
                        quadroArgumentoAdversario[i].GetComponent <QuadroDeArgumento>().LimpaArgumento();
                    }
                }
            }
        }
        for (int i = 0; i < argumentosAdversario.Length; i++)
        {
            if (argumentosAdversario[i] != null)
            {
                if (argumentosAdversario[i].habilidade == CombateArgumento.tipoArgumento.RoubaVida && atributosAtacante == atributosAdversario)
                {
                    atributosAdversario.curar((int)argumentosAdversario[i].valor * danoResultante);
                }
                else if (argumentosAdversario[i].habilidade == CombateArgumento.tipoArgumento.Evasao && atributosAlvo == atributosAdversario)
                {
                    danoResultante    = 0;
                    efetividade.color = Color.blue;
                    efetividade.text  = "imune";
                    argumentosAdversario[i].valor--;
                    if (argumentosAdversario[i].valor < 1)
                    {
                        quadroArgumentoAdversario[i].GetComponent <QuadroDeArgumento>().LimpaArgumento();
                    }
                }
            }
        }
        atributosAlvo.danifica(danoResultante);



        //A: ajusta multiplicador do alinhamento baseado em ataque escolhido, caso seja vez do player
        if (atributosAtacante.atributos.nome == atributosPlayer.atributos.nome)
        {
            ajustaAlinhamento(golpe);
        }

        //A: incrementa contador de vezes que o tipo de ataque foi usado
        somaTipo(atributosAtacante, golpe);

        //A: ajusta barra de argumentos de acordo caso nao tiver maximo de argumentos
        if ((atributosAtacante.atributos.nome == atributosPlayer.atributos.nome && numArgumentosPlayer < argumentosPlayer.Length && turnoAtual == turno.jogador) || (atributosAtacante.atributos.nome == atributosAdversario.atributos.nome && numArgumentosAdversario < argumentosAdversario.Length && turnoAtual == turno.adversario))
        {
            atributosAtacante.setArgumentos(atributosAtacante.getArgumentos() + golpe.barraArgumento);
        }

        if (turnoAtual == turno.adversario)
        {
            falasAdversario.transform.GetChild(1).GetComponent <Text>().text = golpe.nome[0];
            falasAdversario.SetActive(true);
        }
        else if (turnoAtual == turno.jogador && atributosAtacante == atributosPlayer)
        {
            falasPlayer.transform.GetChild(1).GetComponent <Text>().text = golpe.nome[0];
            falasPlayer.SetActive(true);
        }
    }