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

[Projeto] Sem Colisão com as raquetes

Minha bolinha está atravessando as raquetes mesmo com as funções escritas.

//variáveis da Bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 15; let raio = diametro / 2;

//Velocidade da Bolinha let velocidadeXBolinha = 5; let velocidadeYBolinha = 5;

//Variaveis da Raquete let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 90;

// variaveis do oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeYOponente;

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

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(); mostraRaqueteOponente(); movimentoRaquete(); verificaColisaoRaquete(); verificaColisaoRaqueteOponente() movimentaRaqueteOponente();

}

function mostraBolinha (){ circle(xBolinha, yBolinha, diametro); }

function movimentaBolinha (){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }

function verificaColisaoBorda(){ if (xBolinha + raio > width || xBolinha - raio < 0){ velocidadeXBolinha *= -1; } if (yBolinha + raio > height|| yBolinha - raio < 0){ velocidadeYBolinha *= -1; } }

function mostraRaquete(){ rect (xRaquete, yRaquete, raqueteComprimento, raqueteAltura);

}

function mostraRaqueteOponente(){ rect (xRaqueteOponente, yRaqueteOponente, raqueteComprimento, raqueteAltura);

}

function movimentoRaquete (){ if(keyIsDown(UP_ARROW)){ yRaquete -= 10;

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

} }

function verificaColisaoRaquete (){ if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1; } }

function verificaColisaoRaqueteOponente (){ if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1; } }

function movimentaRaqueteOponente (){ velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 -30 yRaqueteOponente += velocidadeYOponente }

3 respostas

Olá, Renan! Como vai?

Uma forma de resolver o seu problema é utilizando a função collideRectCircle() da biblioteca p5.collide2D. Essa função verifica se um retângulo e um círculo estão colidindo.

Te aconselho a fazer como o instrutor fez nessa aula.

Seguindo o passo a passo da aula, a colisão da bolinha com as raquetes deve funcionar corretamente.

Caso você realmente queira utilizar o método que você está usando para verificar a colisão das raquetes com a bolinha, peço que deixe aqui o link para o seu projeto completo, para que eu possa fazer testes com a estrutura toda do projeto e te ajudar da melhor forma possível.

Espero ter ajudado. Fico à disposição!

Abraço!

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

Tive um probleminha ao tentar utilizar a biblioteca... por isso optei por fazer desta forma. Agradeço pela resposta rápida! Aqui está o link do projeto: https://editor.p5js.org/Rjohannx/sketches/V2yHgDcOJ

solução!

Oi, Renan! Tudo bem?

Para resolver o seu problema, você deve apagar a linha 39 do seu código. Veja:

GIF do projeto do jogo Pong feito pelo aluno no P5.JS onde é deletada uma linha do código para corrigi-lo No GIF eu mostro o projeto com essa linha e sem ela.

Isso deve resolver o seu problema de imediato, mas lembre-se sempre de fazer exatamente como no código do instrutor.

Espero ter ajudado!

Fico à disposição. Abraço!

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