1
resposta

alguem me ajudaaaaaaa aula logica de jogos 1 a bola não colide

// Bola let xbola = 300; let ybola = 200; let diametro = 20; let raio = diametro/2;

//Movimento da bola let movimentox = 2; let movimentoy = 6;

//Raquete let xraquete = 5; let yraquete = 150; let comprimentoRaquete = 13; let alturaRaquete = 100; let colidiu = false;

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

function draw() { background(0); MostraBola(); MoveBola(); VoltaBorda(); MostraRaquete(); MovimentaRaquete();

}

function MostraBola(){ circle(xbola,ybola,diametro); }

function MoveBola(){ xbola += movimentox; //ybola += movimentoy;

}

function VoltaBorda(){ if(xbola +raio > width || xbola -raio <0){ movimentox *= -1; } if(ybola + raio > height || ybola -raio <0){ movimentoy *= -1;

 }
}

function MostraRaquete(){ rect(xraquete,yraquete,comprimentoRaquete,alturaRaquete) }

function MovimentaRaquete(){ if(keyIsDown(UP_ARROW)) yraquete -=10 if(keyIsDown(DOWN_ARROW)) yraquete +=10 }

function colisao(){ colidiu = collideRectCircle(xraquete,yraquete,comprimetoRaquete,alturaRaquete, xbola, ybola,diametro); if(colidiu){ movimentox *= -1;}

}
1 resposta

Oiii Petrus, tudo bem?

Peço desculpas pela demora em te responder.

Para a colisão funcionar, é necessário chamar a função colisao() dentro da função draw(), assim:

function draw() { 
    background(0); 
    MostraBola(); 
    MoveBola(); 
    VoltaBorda(); 
    MostraRaquete(); 
    MovimentaRaquete();
    colisao();
} 

Além disso, há um errinho de sintaxe. Está faltando uma letra na variável do comprimento da raquete. Corrija para comprimentoRaquete.

Agora sua colisão deve funcionar normalmente!

Espero ter ajudado. Estou à disposição.

Forte abraço!

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