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

A bolinha bate em uma parede invisível e não colide com a raquete. Como resolver?

// variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2;

// velocidade da bolinha

let velocidadexBolinha = 6;
let velocidadeyBolinha = 6;

// variáveis da raquete

let xRaquete = 5
let yRaquete = 150
let wRaquete = 10
let hRaquete = 90
let dRaquete = 20

// funções do jogo
function setup() { createCanvas(600, 400); }

function draw() {
    background(0);
    mostraBolinha();
    movimentaBolinha();
    colisaoBorda();
    mostraRaquete();
    movimentaRaquete();
    colisaoRaquete();
}

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

function movimentaBolinha() {
    xBolinha += velocidadexBolinha;
    yBolinha += velocidadeyBolinha;
}

function colisaoBorda() {
    if (xBolinha + raio > width || xBolinha - raio < 0) {
        velocidadexBolinha *= -1;
    }
    if (yBolinha + raio > height || yBolinha - raio < 0) {
        velocidadeyBolinha *= -1;
    }
}

function mostraRaquete() {
    rect(xRaquete, yRaquete, wRaquete, hRaquete, dRaquete);
}

function movimentaRaquete() {
    if (keyIsDown(UP_ARROW)) { yRaquete -= 10; }
    if (keyIsDown(DOWN_ARROW)) { yRaquete += 10; }
}
function colisaoRaquete(){
  if (xBolinha - raio < xRaquete + hRaquete && yBolinha - raio <       yRaquete + hRaquete && yBolinha + raio > yRaquete){
    velocidadexBolinha *= -1;
  }
}
2 respostas

Estou com o mesmo problema

solução!

Olá Bruno!!!

function colisaoRaquete(){
  if (xBolinha - raio < xRaquete + wRaquete && yBolinha - raio <       yRaquete + hRaquete && yBolinha + raio > yRaquete){
    velocidadexBolinha *= -1;
  }
}

na função colisãoRaquete, vc se confundiu e usou comprimento da raquete( hRaquete) no lugar de larqgura da raquete( wRaquete). Outra coisa que notei, é que vc colocou diâmetro na raquete? Se vc olhar na aula, verá que a função mostraRaquete tem 04 parâmetros: posição x e y, comprimento e largura da raquete.

Boa sorte!!!