2
respostas

Essa aula foi inútil, pura perda de tempo. A raquete não reconhece a colisão.

https://editor.p5js.org/jctlimabr/sketches/YBG6XFbpR

Copiei o código da aula e a raquete não reconhece a colisão, aconteceu o mesmo com várias pessoas, alguém solucionou com um código enorme, mas não faz muito sentido copiar um código imenso sem entender cada funcionalidade que deveria ser ensinado nas aulas. Perdi um tempão aqui e não resolvi, chega desmotivar :(

2 respostas

Olá, Juliana!

Sinto muito pelo problema que você enfrentou ao copiar o código da aula e perceber que a raquete não reconheceu a colisão. Entendo como isso pode ser desmotivador.

Através do link compartilhado aparentemente o erro mencionado já foi resolvido, boa!

Mas, em geral, um ponto muito importante Juliana é revisar o código, pois as variáveis tem nome diferente apesar de ser apenas uma letrinha, para o computador, já basta para ele não reconhecer mais, caso encontre outro erro deixo uma versão que pode lhe ajudar caso necessário é claro.

function verificaColisaoRaquete() {
    if (xBolinha - raio < xRaquete + RaqueteComprimento
        && yBolinha - raio < yRaquete + RaqueteAltura
        && yBolinha + raio > yRaquete) {
       velocidadexBolinha *= -1;
    }
}

No mais sempre que tiver alguma dúvida e não está conseguindo avançar, mande aqui no fórum vamos tentar lhe ajuda da melhor forma.

Espero ter ajudado, qualquer dúvida, me coloco à disposição! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

É necessário atualizar as variáveis antes de chamar a função verificaColisaoRaquete pois da forma que foi feita as variáveis recebem um valor inicial e nunca mais são alteradas.

Segue uma forma de resolver: Crie 2 funções que vão atualizar as posições da bolinha e da raquete

function  alterarPosicoesBolinha() {
 esquerdaBolinha = xBolinha - raio;
 superiorBolinha = yBolinha - raio;
 inferiorBolinha = yBolinha + raio;    
}

function alterarPosicoesRaquete() {
 direitaRaquete = xRaquete + raqueteComprimento;
 superiorRaquete = yRaquete;
 inferiorRaquete = yRaquete + raqueteAltura;	    
 }

Chame essas funções antes da chamada verificarColisaoRaquete (também pode ser colocada dentro desta própria função)

function draw() {
  background(100);
  mostraBolinha();
  movimentaBolinha();  
  verificaColisaoBorda();
  mostraRaquete();
  movimentaRaquete();   
  alterarPosicoesBolinha(); //ESS  AQUI
  alterarPosicoesRaquete(); //ESSA AQUI
  verificaColisaoRaquete();
}

Isso já irá fazer funcionar. Se quiser deixar seu código mais limpo inicie as variáveis zeradas pois as novas funções criadas já fazem o trabalho de preencher os valores corretos para as variáveis.

let esquerdaBolinha = 0;
let superiorBolinha = 0;
let inferiorBolinha = 0;
    
let direitaRaquete = 0;
let superiorRaquete = 0;
let inferiorRaquete = 0;

Enfiim, é um erro bem simples que a Alura deixou passar visto que ela possui cursos bem mais avançados. Espero ter ajudado.