1
resposta

[Dúvida] bolinha não toca na borda da minha raquete

boa noite, realizei a criação dos codigos conforme na aula e mesmo colocando da mesma forma como consta no vídeo a bolinha não bate na borda como deveria bater.
segue os códigos conforme realizei
//variaveis da bolinha

let xBolinha = 300; let yBolinha = 200; let diametro = 15; let raio = diametro / 2;

//velocidade da bolinha let velocidadeXDaBolinha = 6; let velocidadeYDaBolinha = 6;

//variaveis da raquete let xRaquete = 5; let yRaquete = 150; let comprimentoDaRaquete = 7; let alturaDaRaquete = 95;

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

function draw() { background(0); mostraBolinha(); movimentoDaBolinha(); colisaoDaBorda(); mostraRaquete(); movimentoDaRaquete(); verificaColisaoRaquete(); }

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

function movimentoDaBolinha(){ xBolinha += velocidadeXDaBolinha; yBolinha += velocidadeYDaBolinha; }

function colisaoDaBorda(){ if (xBolinha + raio> width || xBolinha - raio< 0){ velocidadeXDaBolinha *= -1; } if (yBolinha + raio> height || yBolinha - raio< 0){ velocidadeYDaBolinha *= -1; } }

function mostraRaquete(){ rect(xRaquete, yRaquete, comprimentoDaRaquete, alturaDaRaquete); }

function movimentoDaRaquete(){ if(keyIsDown (UP_ARROW)){ yRaquete -= 10; }

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

function verificaColisaoRaquete(){ if(xBolinha < xRaquete + comprimentoDaRaquete){ velocidadeXDaBolinha *= -1; } }

será que fiz algo de errado?

1 resposta

O problema está na função verificaColisaoRaquete(). Esta função verifica se a bolinha está à esquerda da raquete e, se for o caso, inverte a direção da velocidade horizontal da bolinha (velocidadeXDaBolinha *= -1). Isso está causando uma colisão falsa, pois a bolinha pode estar à esquerda da raquete, mas ainda não ter colidido com ela.

Tenta: function verificaColisaoRaquete() { if (xBolinha - raio < xRaquete + comprimentoDaRaquete && xBolinha + raio > xRaquete && yBolinha > yRaquete && yBolinha < yRaquete + alturaDaRaquete) { velocidadeXDaBolinha *= -1; } }