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

Me ajudem por favor!!

Alguém consegue me ajudar nessa situação? após inserir tudo e rodar a aplicação, a bolinha sobe e desce, tremula, sem percorrer livre, somente no eixo Y. quando retiro o "colisaoMinhaRaqueteBiblioteca()" a aplicação volta a ser executada normalmente. O estranho é que não evidencia erro algum no codigo que estou utilizando.

// Variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

// Variáveis da velocidade da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
let raqueteComprimento = 10
let raqueteAltura = 75

// Colisão
let colidiu = false;


// Variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;


// Criação de painel do fundo
function setup() {
  createCanvas(600, 400);
}

// Desenha uma bolinha que percorre o sketch de forma aleatória
function draw(){background(0);
  mostrabolinha();
  movimentabolinha();
  verificacolisao();
  mostraRaquete();
  movimentaMinhaRaquete();
  colisaoRaquete();
  colisaoMinhaRaqueteBiblioteca();
  }

  function mostrabolinha(){
     circle(xBolinha,yBolinha,diametro)
  }
  function movimentabolinha(){
    xBolinha += velocidadeXBolinha;
    yBolinha += velocidadeYBolinha;
  }
  function verificacolisao(){ 
  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 movimentaMinhaRaquete(){
    if (keyIsDown(UP_ARROW)){
      yRaquete -= 10;

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

  function colisaoMinhaRaqueteBiblioteca(){
    colidiu = 
      collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
    if (colidiu){}
       velocidadeXBolinha *= -1;
    }
7 respostas

Você referenciou no seu "index.html" o código que está utilizando essa função?

Se não, veja abaixo a linha marcada, onde referencio ao meu "index.html" o nome do código utilizado onde está a função:

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

Boa tarde amigo, você esta usando duas funções que fazem a mesma coisa simultaneamente ;

  • colisaoRaquete();
  • colisaoMinhaRaqueteBiblioteca();

Coloque ( // ) duas barras na "colisaoRaquete();" para comenta-la que tudo ficará normal.. espero ter ajudado amigo...

Forte abraço...

Galera, obrigado até então pelas possíveis soluções,

Thiago, a sua solução não combina, porque coloquei sim o codigo sem comentário nas duas colisões, desculpa por não avisar, mas eu ja tinha testado tirar a "colisaoRaquete" e deixar só a biblioteca, conforme instruido pelo video aula, mas é aí que acontece isso de a bolinha ficar correndo pelo plano Y, subindo e descendo e não vai pra lugar nenhum mais.

Em relação ao Luís Cláudio, muito obrigado também, ainda não verifiquei essa parte, me lembro de ter seguido essa etapa na video aula, mas preciso verificar novamente, amanhã volto com o resultado dos dois pra vocês, se puderem me ajudar no andamento disso eu agradeço muito! Aos fins de semana eu tiro um tempinho pra jogar, pra relaxar e esquecer um pouco as coisas, durante a semana estudo bastante e foco nisso aqui.

Obrigadão pelo apoio galera!

Bom dia Eric,

verificando seu código novamente procurando algum erro que passou despercebido, encontrei um erro no nome da sua função "verificacolisao( );" onde você não escreveu com a sintaxe correta utilizada dentro do JavaScript, "camelCase" no caso, a primeira letra da função é minúscula e as palavras seguintes serão sempre com iniciais maiúsculas; o correto é: "verificaColisao( );" observe que a sintaxe está errada também quando chamada na função principal "draw( ){ }"

Com certeza é isso, espero ter ajudado!

Vlw, abraços! Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E olha que achei mais erros de "camelCase", veja abaixo e corrija na função principal e em cada função específica no seu código.

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

solução!

Boa noite amigos,

Após analisar as situações que vocês me passaram, e olhar com uma atenção melhor no código, verifiquei e encontrei um único problema no código, mesmo registrando a p5.collide.js, corrigindo camelCase, ainda não resolveu. Fiquei um tempão olhando o código todo e encontrei finalmente o erro, então segue pra quem tiver dúvidas e acabar errando no mesmo que eu, apesar de ser bobeira

// Variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

// Variáveis da velocidade da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
let raqueteComprimento = 10
let raqueteAltura = 75

// Colisão
let colidiu = false;


// Variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;


// Criação de painel do fundo
function setup() {
  createCanvas(600, 400);
}

// Desenha uma bolinha que percorre o sketch de forma aleatória
function draw(){background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisao();
  mostraRaquete();
  movimentaMinhaRaquete();
  colisaoRaquete();
  colisaoMinhaRaqueteBiblioteca();
  }

  function mostraBolinha(){
     circle(xBolinha,yBolinha,diametro)
  }
  function movimentaBolinha(){
    xBolinha += velocidadeXBolinha;
    yBolinha += velocidadeYBolinha;
  }
  function verificaColisao(){ 
  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 movimentaMinhaRaquete(){
    if (keyIsDown(UP_ARROW)){
      yRaquete -= 10;

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

  function colisaoMinhaRaqueteBiblioteca(){
    colidiu = 
      collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
    **if (colidiu){
      velocidadeXBolinha *= -1;
    }**

}

Não sei se vai marcar, mas na ultima function, em "colisaoMinhaRaqueteBiblioteca()" não percebi e na linha if (colidiu){} havia colocado a "velocidadeXBolinha = -1" fora das chaves, por isso a bolinha quando ativado a function Biblioteca, percorria somente o plano Y da tela.

Agradeço muito a atenção e ajuda de vocês!

Eric Hudson Santos Almeida, sucesso. Havia verificado todo o codigo, as chaves abriam e fechavam. devo ter deixamo mais alguma coisa parra. seu codigo esta perfeito. Obigado