1
resposta

A raquete da direita não funciona igual a da esquerda

Quando eu adiciono a condição pra não pegar na horizontal de baixo , o código todo da função de colisão se anula sem motivo algum , mas se eu apagar o trecho ela funciona... :

&&
   yBolinha + raio < yRetanguloDireito 

... mas não funciona na horizontal de baixo, pq não funciona se eu colocar essa condição??????

function setup() {
    createCanvas(600, 400);
  }
  function draw() {
    background(0);
    mostraBolinha();
    movimentaBolinha();
    verificaColisaoBorda();
    criaRetanguloEsquerdo();
    criaRetanguloDireito()
    movimentaRetangulo();
    verificaColisaoRetanguloEsquerdo();
    verificaColisaoRetanguloDireito();

  }

let xBolinha=300;
let yBolinha=200;
let Diametro=20;

let velocidadexBolinha= 6;
let velocidadeyBolinha= 6;
let raio = Diametro / 2;

//bolinha funções

  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;
      }
  }

//funções do retângulo esquerdo

let xRetangulo=20;
let yRetangulo=150;
let horizontalRetangulo= 15;
let verticalRetangulo= 90;

  function criaRetanguloEsquerdo(){ 
    rect(xRetangulo,yRetangulo,horizontalRetangulo,verticalRetangulo);
  }

  function movimentaRetangulo(){
    if(keyIsDown(UP_ARROW)){
      yRetangulo -= 10;
    }
    if (keyIsDown(DOWN_ARROW)){
      yRetangulo += 10;
    }
  }
  function verificaColisaoRetanguloEsquerdo(){

    if(xBolinha - raio < xRetangulo + horizontalRetangulo && 
       yBolinha - raio < yRetangulo + verticalRetangulo &&
       yBolinha + raio > yRetangulo ){
       velocidadexBolinha *= -1;
       }
  }

//funções retângulo direito

let xRetanguloDireito = 560;
let yRetanguloDireito= 150;
let velocidadeyDireito;

  function criaRetanguloDireito(){   rect(xRetanguloDireito,yRetanguloDireito,horizontalRetangulo,verticalRetangulo);
  }

  function movimentaRetanguloDireito(){
    velocidadeyDireito = yBolinha - yRetanguloDireito - verticalRetangulo / 2 - 30;
    yRetanguloDireito *=1;
  }

  function verificaColisaoRetanguloDireito(){

    if(xBolinha + raio > xRetanguloDireito  &&
      yBolinha + raio > yRetanguloDireito + horizontalRetangulo &&
      yBolinha + raio < yRetanguloDireito   ){

       velocidadexBolinha *= -1;

       }
  }
1 resposta

Oi, Gabrielle! Tudo bem contigo?

Desculpe a demora em dar um retorno e também não entendi muito bem sua dúvida :-(

Poste o link do seu projeto para que eu possa dar uma olhada e fazer alguns testes

Ficaremos no aguardo!

Até breve!