Oi, Percy! Tudo bem?
O problema se encontra no trecho de código abaixo:
if (xBolinha > width || xBolinha < 0){
velocidadeXdaBolinha = -1;
}
if (yBolinha > height || yBolinha < 0){
velocidadeYdaBolinha = -1;
}
Podemos notar que ao longo do código a variável que se refere a velocidade no eixo x da bolinha foi declarada com o nome velocidadeXBolinha
e não com a nomenclatura velocidadeXdaBolinha
, assim como a variável que se refere a velocidade no eixo y da bolinha foi declarada como velocidadeYBolinha
e não com a nomenclatura velocidadeYdaBolinha
.
Somado a isso, precisamos executar um comando no qual ao a posição da bolinha atingir uma posição equivalente a posição das extremidades da tela do nosso jogo a velocidade da bolinha voltar, ou seja, não continuar executando aquela direção mas sim executar o sentindo contrário, logo, para fazermos isso precisamos definir que a velocidade da bolinha vai ser igual à ela mesma porém multiplicada por -1. Entretanto, o que está acontecendo no código enviado é que está sendo atribuído o valor -1 para a velocidade da bolinha e não multiplicando o seu valor por menos 1.
Dessa forma, para resolvermos o problema precisamos apenas substituir as variáveis velocidadeXdaBolinha
e velocidadeYdaBolinha
por velocidadeXBolinha
e velocidadeYBolinha
, além de adicionarmos um sinal de multiplicação ao comando de nova definição dessas variáveis, deixando o nosso código da seguinte maneira:
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let velocidadeXBolinha = 10;
let velocidadeYBolinha = 10;
function setup() {
createCanvas(600, 400);
}
function draw() {
background(0);
circle(xBolinha, yBolinha, diametro);
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeYBolinha;
if (xBolinha > width || xBolinha < 0){
velocidadeXBolinha *= -1;
}
if (yBolinha > height || yBolinha < 0){
velocidadeYBolinha *= -1;
}
}
Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓