3
respostas

[Dúvida] Como fazer com que a raquete tenha um limite de movimento?

Quero que a raquete não ultrapasse as bordas mas não sei como definir o comando pra isso. https://editor.p5js.org/victor-ss13/sketches/Kh0aPVscB

3 respostas

Olá Victor, tudo bem?

Para limitarmos a raquete, podemos criar uma condição, no qual verifica se o valor de y é maior(>) ou menor (<) do que o tamanho da tela.

Portanto, na função que verifica o acionamento do botão e executar a adição ou subtração do y que se chama movimentaRaquete() vamos adicionar uma nova condição/if.

function movimentaRaquete() {

  if(yRaquete > 0){ // Nova Condição

     if (keyIsDown(UP_ARROW)) {yRaquete -= 10}
  }

  if(yRaquete < 310){  // Nova condição

  if (keyIsDown(DOWN_ARROW)) {yRaquete += 10}

  }

}

O processo é o seguinte, caso o valor de yRaquete seja maior(>) que 0, ou seja, vai retorna um true, faz com que o outro if que está dentro dessa condição seja executado, o mesmo ocorre para a verificação do outro novo if no qual observa se o valor é menor(<) que 310, portanto, a raquete só pode se movimentar no intervalo de 0 até 310, evitando que a raquete saia da tela por completo.

Caso tenha mais dúvidas a respeito, me coloco à disposição!

Espero ter ajudado, conte sempre com o fórum da comunidade alura

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Oi, pessoal! Tentei de várias formas e todas davam algum erro. Principalmente na colisão da raquete do jogador.

A solução que encontrei foi a seguinte:

para a colisão com as bordas para a raquete do oponente (RRacket)

  if (yRRacket < 0){
    yRRacket = 0;    
  }
  if (yRRacket + hRacket > height) {
    yRRacket = height - hRacket;
    }
}

para a colisão da raquete do jogador (LRacket), na 'função de movimento da raquete' adicionei

function moveLRacket () {
  if (keyIsDown(UP_ARROW) && yLRacket > 0) {
    yLRacket -= 8;
  }
  else {
    yLRacket +=0;
  }
  if (keyIsDown(DOWN_ARROW) && yLRacket + hRacket < height) {
    yLRacket += 8;
  }
  else {
    yLRacket +=0;
  }
}

Funciona pra vocês? Espero que tenha ajudado. Abraços!