Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problemas com a colisão

Ao meu ver, o código está idêntico ao do exemplo, mas na colisão do eixo X com width a bola passa da borda e volta (só mudei o nome das variáveis).

var xBall = 300
var yBall = 200
var ballDiameter = 17
var ray = ballDiameter / 2;

var ballSpeedX = 6
var ballSpeedY = 6


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

function draw() {
  background (0);
  ball();
  ballMovement();
  ballCollision();
}

function ball(){
  circle(xBall, yBall, ballDiameter);
}

function ballMovement(){
  xBall += ballSpeedX;
  //yBall += ballSpeedY;
}

function ballCollision() {
  if (xBall + ray > width || xBall - ray < 0) {
    ballSpeedX *= -1;
  }
  if (yBall + ray > height || yBall - ray < 0) {
    ballSpeedY *= -1;
  }
}

Minha solução foi alterar a largura do canvas para 580, o que fez o código funcionar perfeitamente .

var xBall = 300
var yBall = 200
var ballDiameter = 17
var ray = ballDiameter / 2;

var ballSpeedX = 6
var ballSpeedY = 6


function setup() {
  createCanvas (580,400)
}

function draw() {
  background (0);
  ball();
  ballMovement();
  ballCollision();
}

function ball(){
  circle(xBall, yBall, ballDiameter);
}

function ballMovement(){
  xBall += ballSpeedX;
  yBall += ballSpeedY;
}

function ballCollision() {
  if (xBall + ray > width || xBall - ray < 0) {
    ballSpeedX *= -1;
  }
  if (yBall + ray > height || yBall - ray < 0) {
    ballSpeedY *= -1;
  }
}
1 resposta
solução!

Olá, Kellyson! Tudo bem?

Muito bacana sua mudança nos nomes das variáveis, parabéns!

Copiei seu código e testei no navegador Chrome e funcionou perfeitamente, a única alteração que fiz foi na velocidade da bolinha para conseguir visualizar melhor a colisão.

Ah, gravei o teste e disponibilizei nesse link do Youtube => Vídeo teste colisão bolinha

Seu trabalho está muito bom! Qualquer dúvida é só chamar, bons estudos!