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

Raquete do Oponente não está movimentando

Após a video aula sobre a raquete do oponente, tentei recriar a função de movimento da mesma, porém a raquete não se movimenta no eixo Y (seguindo a bolinha como no código) enquanto a bolinha se movimenta tranquilamente.

//Racket's Variables
let xRacketL = 5;
let yRacketL = 150;
let xRacketsize = 10;
let yRacketsize = 90;
let xRacketR = 585;
let yRacketR = 150;
let yRacketRspeed;

//Ball's varaibles
let speedXBall = 6;
let speedYBall = 6;
let xBall = 300;
let yBall = 200;
let diameter = 15;
let radius = diameter/2;

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

function draw() {
  background(0);
  showBall();
  moveBall();
  checkBoardcollision();
  moveRacketL();
  checkRacketLcollision();
  showRacket(xRacketL, yRacketL);
  showRacket(xRacketR, yRacketR);
}

//Show
function showBall(){
  circle(xBall, yBall, diameter);
}

function showRacket(x,y){
  rect(x, y, xRacketsize, yRacketsize);
}

//Move
function moveBall(){
  xBall += speedXBall;
  yBall += speedYBall;
}

function moveRacketL() {
    if (keyIsDown(UP_ARROW)) {
        yRacketL -= 10;
    }
    if (keyIsDown(DOWN_ARROW)) {
        yRacketL += 10;
    }
}

function moveRacketR(){
  yRacketRspeed = yBall - yRacketR - yRacketsize / 2 - 30;
  yRacketR += yRacketspeed;
}


//Check collision
function checkRacketLcollision() {
  if (xBall - radius < xRacketL + xRacketsize &&
yBall - radius < yRacketL + yRacketsize && yBall + radius > yRacketL)
  {speedXBall *= -1}
}

function checkBoardcollision(){
  if (xBall + radius> width ||
     xBall - radius< 0){
    speedXBall *= -1;
  }
  if (yBall + radius> height ||
     yBall - radius < 0){
    speedYBall *= -1;
  }
}

O quê há de errado com meu código?

Desde já agradeço.

2 respostas

Fala aí Vinicius, tudo bem? Olhando seu código, acho que talvez tenha faltado chamar a função moveRacketR dentro da função draw.

Posso estar errado, mas acredito que há chances do problema ser esse.

Espero ter ajudado.

solução!

Vinicius,

Como o Matheus Castiglioni comentou faltou chamar a função moveRacketR dentro da função draw e também dentro da função moveRacketR voce declarou uma variável yRacketRspeed mas na linha abaixo voce ta chamando a variável yRacketspeed, que nao existe. Voce se esqueceu de colocar o R** antes do **speed.