Olá pessoal, fiquei horas buscando uma forma de deixar a movimentação do oponente realmente aleatória, busquei soluções já existentes aqui no fórum mais tudo que eu achava com a função random() deixava a raquete do oponente muito muito doida, pois o valor da variável alterava tão rápido quanto a movimentação, deixando a raquete doidinha, foi então que pensei que a raquete só deveria mudar esse valor quando tocasse na raquete, então coloquei a solução do random na função de colisão e aí sim deu certo, porem para chegar nessa conclusão a primeira coisa foi corrigir o movimento da raquete do oponente, pois o que passa na aula não faz sentido nenhum, eles usam o comprimento da raquete quando, na verdade, devem usar a altura da raquete ainda subtraem 30 que não faz sentido, pois se a bolinha é para bater no meio subtrair 30 irá fazer a bolinha bater um pouco acima do meio da raquete, enfim não faz sentido, acho que já fazem errado para gente buscar uma solução, corrigindo isso o código ficou conforme abaixo assim a bolinha sempre ira bater no meio da raquete do oponente.
function movimentaRaqueteOponente()
{
velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteAltura / 2
yRaqueteOponente += velocidadeYOponente
}
Aí chegando nessa conclusão eu só precisava definir quantos píxeis a bolinha precisaria subtrair ou somar da variável velocidade para que ela batesse fora da raquete, então cheguei no valor 59 para cima no eixo y da raquete ou 59 para baixo no eixo y da raquete, ou seja, subtrair 59 ou somar 59 na velocidade faria com que a bolinha batesse fora da raquete do oponente, pois no meio falta 50 para cima ou 50 para baixo, mais ou 8 de raio da bolinha e mais 1 para ela sair, "foi assim que cheguei no resultado de 59", porem devido o limitador da raquete dentro da tela quando a bolinha tivesse nas bordas inferiores ou superiores esse valor deveria ser maior, mas isso não importou tanto, pois o fator do aleatório que eu queria, ocorreu, então foi só aumentar esse valor de aleatório de 59 para +100 ou -100 que ficaria ainda mais dinâmico, o código para que isso ocorre-se ficou conforme abaixo;
function movimentaRaqueteOponente()
{
velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteAltura / 2 - chanceDeErrar;
yRaqueteOponente += velocidadeYOponente
yRaqueteOponente = constrain(yRaqueteOponente, 0, 300);
}
function verificaColisaoRaqueteBiblioteca(x,y)
{
colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
if (colidiu)
{
velocidadeXBolinha *= -1;
raquetada.play();
chanceDeErrar = int(random(-100,100));
}
}
**E só complementando para acabar com o erro da bolinha ficar batendo atrás da raquete, coloquei a função inicio para que toda vez que se faz um ponto, ela reinicie do meio, e também coloquei posições aleatórias nesse retorno para que ficasse mais dinâmico **
function inicio()
{
xBolinha = 300;
yBolinha = random([50,100,150,200,250,300,350]);
}
function marcaPontos()
{
if (xBolinha > 593)
{
meusPontos += 1;
ponto.play();
inicio();
}
if (xBolinha < 7)
{
oponentePontos += 1;
ponto.play();
inicio();
}
}
Para quem quiser ver todo o código segue o link