/// <summary> /// Função que será utilizada para criar a plateia /// </summary> /// <param name="focoEm">Onde se deve ter a maioria das pessoas</param> /// <param name="quant">A quantidade média de pessoas que deve estar na plateia</param> /// <param name="animacaoDaPlateia">A animação média da plateia</param> public void CriarPlateia(Localizacao focoEm, QuantidadePlateia quant, Animo animacaoDaPlateia, VariacaoAnimo variacao) { List <Posicao> posicoesParaInstanciar; inst.EliminarPlateia(); //Matemagica aqui; Valor base é usado para determinar a quantidade de pessoas que vai ter na posição em foco //E também vai ser utilizado para determinar a quantidade de pessoas em outras posições float valorBase = 0; RetornarPorcentagem(quant, out valorBase); if (valorBase == 0) { return; } else if (valorBase == 1) { posicoesParaInstanciar = banqueta.RetornarPosicoes(1, 1, 1, 1, 1); } else //Momento da matemagica. Aqui tem que dar um jeito de retornar aleatorizar as posições de sentar dos avatares { float[] por = RetornarPorcentagemNasPosicoes(focoEm, valorBase); posicoesParaInstanciar = banqueta.RetornarPosicoes(por[0], por[1], por[2], por[3], por[4]); } float[] porAnimo = RetornarPorcentagemDeAnimo(animacaoDaPlateia, variacao); Debug.Log("Porcentagem dos animos:\n"); for (int i = 0; i < 6; i++) { Debug.Log(porAnimo[i] + "\n"); } inst.InstanciarPlateia(pessoasDaPlateia, posicoesParaInstanciar, porAnimo); }
/// <summary> /// Função utilizada para determinar animação da pessoa a partir de um animo pré determinado. Olhar enum Animo /// </summary> /// <param name="comoEstou">Animo pré determinado</param> public void Animar(Animo comoEstou) { switch (comoEstou) { case Animo.CONCENTRADA: animador.SetFloat("interesse", 1f); animador.SetFloat("animacao", Random.Range(0f, 0.2f)); animador.SetFloat("inquietude", Random.Range(0f, 0.5f)); break; case Animo.POUCO_CONCENTRADA: animador.SetFloat("interesse", Random.Range(0f, 0.5f)); animador.SetFloat("animacao", Random.Range(0f, 0.2f)); animador.SetFloat("inquietude", Random.Range(0f, 0.5f)); break; case Animo.NORMAL: animador.SetFloat("interesse", Random.Range(-0.5f, 0.5f)); animador.SetFloat("animacao", Random.Range(0f, 0.2f)); animador.SetFloat("inquietude", Random.Range(0f, 0.5f)); break; } }
/* CONCENTRADA, * POUCO_CONCENTRADA, * NORMAL, * DISTRAIDA, * ENTEDIADA, * BAGUNCANDO, * SAINDO //Animo saindo é especial, não entra nessa contagem * porcentagem para o animo escolhido = 50% * porcentagem para os outros animos = 10% */ /// <summary> /// Função utilizada para retornar o animo da plateia utilizando presets. Facilita a utilização rapida do app /// </summary> /// <param name="an">Animo base a ser entrado</param> /// <param name="var">Quantidade de variação entre o animo da plateia</param> /// <returns></returns> float[] RetornarPorcentagemDeAnimo(Animo an, VariacaoAnimo var) { float[] pa = new float[6]; //porcentagemDosAnimos float variacao = RetornarPorcentagemDeVariacao(var); switch (an) { case Animo.CONCENTRADA: pa[0] = 0.5f - variacao; pa[1] = 0.1f + variacao / 5; pa[2] = 0.1f + variacao / 5; pa[3] = 0.1f + variacao / 5; pa[4] = 0.1f + variacao / 5; pa[5] = 0.1f + variacao / 5; break; case Animo.POUCO_CONCENTRADA: pa[0] = 0.1f + variacao / 5; pa[1] = 0.5f - variacao; pa[2] = 0.1f + variacao / 5; pa[3] = 0.1f + variacao / 5; pa[4] = 0.1f + variacao / 5; pa[5] = 0.1f + variacao / 5; break; case Animo.NORMAL: pa[0] = 0.1f + variacao / 5; pa[1] = 0.1f + variacao / 5; pa[2] = 0.5f - variacao; pa[3] = 0.1f + variacao / 5; pa[4] = 0.1f + variacao / 5; pa[5] = 0.1f + variacao / 5; break; case Animo.DISTRAIDA: pa[0] = 0.1f + variacao / 5; pa[1] = 0.1f + variacao / 5; pa[2] = 0.1f + variacao / 5; pa[3] = 0.5f - variacao; pa[4] = 0.1f + variacao / 5; pa[5] = 0.1f + variacao / 5; break; case Animo.ENTEDIADA: pa[0] = 0.1f + variacao / 5; pa[1] = 0.1f + variacao / 5; pa[2] = 0.1f + variacao / 5; pa[3] = 0.1f + variacao / 5; pa[4] = 0.5f - variacao; pa[5] = 0.1f + variacao / 5; break; case Animo.BAGUNCANDO: pa[0] = 0.1f + variacao / 5; pa[1] = 0.1f + variacao / 5; pa[2] = 0.1f + variacao / 5; pa[3] = 0.1f + variacao / 5; pa[4] = 0.1f + variacao / 5; pa[5] = 0.5f - variacao; break; } return(pa); }