Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Alguém sabe me dizer porque Colisão com raquete do oponente não funciona?

// variaveis da bolinha let xBolinha =300; let yBolinha =200; let diametro =25; let raio = diametro / 2;

// velocidade da bolinha let velocidadeXBolinha = 2; let velocidadeYBolinha = 2;

// variaveis da raquete

let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 90; let colidiu = false;

// variaveis do oponente

let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeYOponente; function setup() { createCanvas(600, 400); }

function draw() { background(0); mostraBolinha(); movimentaBolinha(); vereficaColisaoBorda(); mostrarRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); vereficaColisaoRaquete(); vereficaColisaoRaquete(xRaquete,yRaquete); mostrarRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente(); vereficaColisaoRaquete(xRaqueteOponente, yRaqueteOponente); }

function mostraBolinha (){ circle(xBolinha, yBolinha, diametro); } function movimentaBolinha(){ xBolinha += velocidadeXBolinha; //yBolinha += velocidadeYBolinha; } function vereficaColisaoBorda( ){

if (xBolinha + raio > width || xBolinha - raio < 0){velocidadeXBolinha *= -1} if (yBolinha + raio > height || yBolinha - raio < 0) {velocidadeYBolinha *= -1} } function mostrarRaquete(x,y){ rect(x, y, raqueteComprimento,raqueteAltura); } function mostrarRaqueteOponente(){ rect(xRaqueteOponente, yRaqueteOponente, raqueteComprimento,raqueteAltura); } function movimentaMinhaRaquete(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 10;

} if (keyIsDown(DOWN_ARROW)){ yRaquete += 10; }} function vereficaColisaoRaquete(){

if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){ velocidadeXBolinha *= -1; }

} function verificaColisaoRaquete(x, y){ colidiu = collideRectCircle(x, y,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio); if (colidiu){ velocidadeXBolinha *= -1; }

}

function movimentaRaqueteOponente() {

velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 -30; yRaqueteOponente += velocidadeYOponente;

}

2 respostas
solução!

Olá, Gabriel, você chamou a função como "verefica" e declarou ela como "verifica", ou seja, trocou o i por e:

function verificaColisaoRaquete(x, y){ 
        colidiu = collideRectCircle(x, y,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio); 
        if (colidiu){ velocidadeXBolinha *= -1; 
        }
}

Corrija o nome da função dentro da função draw:

function draw() { 
        background(0); 
        mostraBolinha(); 
        movimentaBolinha(); 
        vereficaColisaoBorda(); 
        mostrarRaquete(xRaquete, yRaquete); 
        movimentaMinhaRaquete(); 
        vereficaColisaoRaquete();     //essa função pode ser excluída
        vereficaColisaoRaquete(xRaquete,yRaquete);      //corrigir o nome da função aqui
        mostrarRaquete(xRaqueteOponente, yRaqueteOponente); 
        movimentaRaqueteOponente(); 
        vereficaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);    //corrigir o nome da função aqui também
}

Se o problema persistir, compartilhe o link do seu projeto aqui para a gente tentar ajudar.

Se preferir compartilhar apenas o código, use o botão </> para não desconfigurar a indentação.

Espero ter ajudado. Bons estudos!

Obrigado!