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
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
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!
oi Victor, eu fiz no meu jogo.
https://cursos.alura.com.br/forum/topico-raquete-com-colisao-na-borda-274245
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!