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

Minha bolinha desaparece quando bate na borda superior e depois de uns segundos volta.

//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

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

function draw() {
  background(0);
  mostraBolinha();
  velocidadeBolinha();
  verificarColisaoBorda();
}

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

function velocidadeBolinha(){
  xBolinha += velocidadexBolinha
  yBolinha += velocidadeyBolinha
}

function verificarColisaoBorda(){

if (xBolinha + raio > width ||
  xBolinha - raio< 0){
  velocidadexBolinha *= -1
}

if (yBolinha + raio > height ||
   xBolinha - raio < 0){
  velocidadeyBolinha *= -1
}
}
3 respostas
solução!

Olá Hilda,

O erro está no segundo if da função verificarColisaoBorda().

troque a variável xBolinha pela variável yBolinha:

toque:

if (yBolinha + raio > height ||
   xBolinha - raio < 0){
  velocidadeyBolinha *= -1
}

por:

if (yBolinha + raio > height ||
   yBolinha - raio < 0){
  velocidadeyBolinha *= -1
}

Hilda,

O código completo ficará da seguinte forma:

//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

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

function draw() {
  background(0);
  mostraBolinha();
  velocidadeBolinha();
  verificarColisaoBorda();
}

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

function velocidadeBolinha(){
  xBolinha += velocidadexBolinha
  yBolinha += velocidadeyBolinha
}

function verificarColisaoBorda(){

if (xBolinha + raio > width ||
  xBolinha - raio< 0){
  velocidadexBolinha *= -1
}

if (yBolinha + raio > height ||
   yBolinha - raio < 0){
  velocidadeyBolinha *= -1
}
}

Era isso mesmo! Obrigada!