2
respostas

Pong JavaScript trocando circulo por quadrado

Então, venho fazendo o código acompanhando as aulas, chegando na aula 04 "colisão com a raquete" eu reparei que bom, tava meio diferente do que estava sendo apresentado, foi onde eu me dei conta que ao invés de utilizar o circulo eu havia optado pelo quadrado(já que o original é um quadrado). Queria saber se alguém sabe se isso é o que está interferindo com a colisão da bola com o canto superior da tela e da bola com a "raquete", e caso seja esse o problema o que devo fazer pra arrumar. o meu código está assim:

https://editor.p5js.org/HelvioCavaca/sketches/NqCxsKzHf

//----------Ball Variables--------------------------//
let xBall = 300;
let yBall = 200;
let diameterBall = 15;
let radiusBall = diameterBall / 2 ;
//----------Player Variables--------------------------//
let xPlayer = 5;
let yPlayer = 150;
let widthPlayer = 10;
let heightPlayer = 90;

//----------Ball Speed-----------------------------//
let speedXBall = 2;
let speedYBall = 2;

function setup() {
  createCanvas(600, 400);
}
/*----------Main Function-------------------------*/
function draw() {
  background(0);
  drawBall();
  ballMovement();
  ballCollision();
  drawPlayer();
  playerMovement();
  playerCollision();
}
/*----------Main Function-------------------------*/
/*----------Ball Function-------------------------*/
function drawBall(){
  square( xBall,yBall,diameterBall);
}
/*----------ballMovement--------------------------*/
function ballMovement(){
    xBall += speedXBall ;
    yBall += speedYBall ;
}
/*----------ballCollision------------------------*/
function ballCollision(){
    if (xBall + radiusBall> width || 
        xBall - radiusBall< 0){
    speedXBall *= -1;
  }
    if (yBall + radiusBall> height || 
        yBall - radiusBall<0){
    speedYBall *= -1;
  }
}
/*----------Ball Function-------------------------*/
/*---------Player Function------------------------*/
function drawPlayer(){
  rect( xPlayer,yPlayer,widthPlayer, heightPlayer);
}
/*----------playerMovement------------------------*/
function playerMovement(){
  if(keyIsDown(UP_ARROW)){
    yPlayer -= 10;
  }
  if(keyIsDown(DOWN_ARROW)){
    yPlayer += 10;
  }
}
/*----------playerCollision----------------------*/
function playerCollision(){
  if (xBall - radiusBall < xPlayer + widthPlayer && yBall - radiusBall < yPlayer + heightPlayer && yBall + radiusBall > yPlayer){
     speedXBall *= -1;
  }


}
/*---------Player Function-----------------------*/
2 respostas

Oi Hélvio, tudo bem? Espero que sim!

Agradeço por aguardar um retorno nosso!

Obrigada por compartilhar o seu projeto, ao testar ele funcionou normalmente, a bolinha mesmo sendo quadrada funcionou corretamente colindo com a parte superior da raquete e inferior ou superior da borda tela. Acredito que tenha conseguido solucionar o problema, parabéns!

Caso se sinta confortável compartilhe aqui no fórum a solução, dessa forma, podemos ajudar outros alunos que tiveram o mesmo problema.

Qualquer dúvida fico à disposição.

Bons estudos e a gente se vê!

Boa tarde, tudo certo.

Então, a colisão não ficou legal como quadrado, porém agora que eu já finalizei o projeto, eu botei como "bolinha" (círculo) pra poder testar e vi que como círculo funcionou da maneira proposta. Enquanto não consigo arrumar a colisão pra "bolinha" quadrada eu vou bem deixar como círculo mesmo.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software