Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Bolinha Não Colide com a Raquete

Alguém poderia me ajudar?

Antes de mudar o código a bolinha estava colidindo com a raquete e depois de criavar novas váriaveis isso parou de acontecer e não consigo achar onde estou errando:

Coloquei em negrito o que mudei no codigo, conforme aula 05 modulo 3.

// informações bolinha

let xBolinha = 200; let yBolinha = 100; let diametro = 15; let raio = 15/2; let velXBolinha = 2; let velYBolinha = 2;

//Informações Raquetes // x e y = localização das raquetes // h e c = comprimento e profundidade das raquetes let xMinhaRaquete = 5; let yMinhaRaquete = 150; let hMinhaRaquete = 10; let cMinhaRaquete = 100; let xRaqueteOponente = 585; let yRaqueteOponente = 150; let hRaqueteOponente = 10; let cRaqueteOponente = 100;

**//Extremidades bolinha

let esquerdaBolinha = xBolinha - raio; let superiorBolinha = yBolinha - raio; let inferiorBolinha = yBolinha + raio;

// Extremidades minha raquete

let direitaMinhaRaquete = xMinhaRaquete + cMinhaRaquete; let superiorMinhaRaquete = yMinhaRaquete; let inferiorMinhaRaquete = yMinhaRaquete + hMinhaRaquete; **

// Extremidades raquete oponente

let direitaRaqueteOponente = xRaqueteOponente - cRaqueteOponente; //let superiorRaqueteOponente = yRaqueteOPonente; let inferiorRaqueteOponente = yRaqueteOponente - hMinhaRaquete

function movimentoMinhaRaquete(){ if (keyIsDown(UP_ARROW)){ yMinhaRaquete -=10; }

if (keyIsDown(DOWN_ARROW)){ yMinhaRaquete +=10; } }

function movimentoBolinha(){ xBolinha += velXBolinha; yBolinha += velYBolinha; }

*function verificaRaquete() { if (esquerdaBolinha < direitaMinhaRaquete && superiorBolinha < inferiorMinhaRaquete && inferiorBolinha > superiorMinhaRaquete) { velXBolinha = -1; } }

function verificaBorda(){ if (xBolinha + raio > width || xBolinha + raio < 0) velXBolinha *=-1; if (yBolinha + raio > height || yBolinha + raio < 0) velYBolinha *=-1; if (yMinhaRaquete +100 > height) yMinhaRaquete-=30; if (yMinhaRaquete < 0) yMinhaRaquete+=30 }

function minhaRaquete(){ rect(xMinhaRaquete, yMinhaRaquete, hMinhaRaquete, cMinhaRaquete); }

function raqueteOponente(){ rect(xRaqueteOponente, yRaqueteOponente, hRaqueteOponente, cRaqueteOponente); }

function bolinha(){ circle(xBolinha, yBolinha,diametro); }

function setup() { createCanvas(600, 400); }

function draw() { background(0); bolinha(); verificaBorda(); movimentoBolinha(); minhaRaquete(); raqueteOponente(); movimentoMinhaRaquete(); verificaRaquete();

}

1 resposta
solução!

Oi Marcelo, como vai?

Analisando seu código, pude perceber que há um erro na função verificaRaquete() que está impedindo a colisão entre a bolinha e a raquete. Vamos corrigir essa função e ajustar algumas partes do código:

function verificaRaquete() {
  if (esquerdaBolinha < direitaMinhaRaquete && superiorBolinha < inferiorMinhaRaquete && inferiorBolinha > superiorMinhaRaquete) {
    velXBolinha *= -1;
  }
}

Além disso, percebi alguns erros de digitação que podem causar problemas no código:

  • Na variável direitaRaqueteOponente, você digitou xRaqueteOponente - cRaqueteOponente, mas acredito que seja xRaqueteOponente + cRaqueteOponente para representar a extremidade direita da raquete do oponente.

  • Na variável inferiorRaqueteOponente, você digitou yRaqueteOponente - hMinhaRaquete, mas deve ser yRaqueteOponente + hRaqueteOponente para representar a extremidade inferior da raquete do oponente.

Corrija essas linhas da seguinte forma:

let direitaRaqueteOponente = xRaqueteOponente + cRaqueteOponente;
let inferiorRaqueteOponente = yRaqueteOponente + hRaqueteOponente;

Espero ter ajudado!

Caso surjam dúvidas, estarei a disposição.

Abraços e bons estudos!