2
respostas

yBolinha + raio > yRaquete

Olá Eu já entendi o plano cartesiano e as posições X/Y do círculo e do retangulo no p5.js;

O que eu não entendo é por que na função yBolinha - raio < yRaquete + raqueteAltura a bolinha na situação do print abaixo não colide com a borda (quando a bolinha está acima da raquete)?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A minha dúvida permanece na seguinte situação && yBolinha + raio > yRaquete, ao utilizar a condição de o yBolinha estar maior que o yRaquete, a bolinha abaixo da raquete não deveria tocar as bordas?

Por favor, podem me ajudar?

2 respostas

Olá Antonio Sergio,

Sua questão está relacionada com a detecção de colisões em um jogo, e acredito que você está tentando implementar uma condição de colisão entre uma "bolinha" (possivelmente representando uma bola) e uma "raquete" em um ambiente de jogo.

Aqui está a explicação do código:

yBolinha - raio < yRaquete + raqueteAltura:

Isso verifica se a borda superior da bola (ou seja, a posição Y da bola menos o raio) está abaixo da borda inferior da raquete (ou seja, a posição Y da raquete mais a altura da raquete). Em outras palavras, está verificando se a bola está batendo no fundo da raquete.

Em seguida, a segunda condição que você mencionou:

yBolinha + raio > yRaquete:

Isso verifica se a borda inferior da bola (ou seja, a posição Y da bola mais o raio) está acima da borda superior da raquete (ou seja, a posição Y da raquete). Em outras palavras, está verificando se a bola está batendo na parte superior da raquete.

Quando você diz "a bolinha abaixo da raquete não deveria tocar as bordas?", depende de como você está implementando a lógica de colisão. Se você quiser que a bola "rebata" quando atingir a parte inferior da raquete, então a condição yBolinha + raio > yRaquete deve ser suficiente. No entanto, se a bola está passando pela raquete, então parece que algo mais está acontecendo.

Aqui estão algumas coisas para verificar:

  1. Verifique se você está atualizando as posições da bola e da raquete corretamente.
  2. Verifique se a lógica de colisão está sendo chamada a cada quadro (ou em algum intervalo regular).
  3. Verifique se a condição de colisão está corretamente escrita e implementada no seu código.

Se a bola ainda está passando pela raquete apesar de tudo, por favor, forneça um trecho de código para que eu possa te ajudar melhor.

Obrigado pela resposta!

Mas o que ainda de deixa confuso é:

Na condição yBolinha + raio > yRaquete o sinal > diz que se o yBolinha + raio for MAIOR que yRaquete; No plano cartesiano o maior não é para baixo no caso do Y e para direita no caso do X? Por qual motivo o sinal > nessa lógica implenta resultado acima do plano yRaquete?