3
respostas

Ator volta antes de colidir

O ator antes de colidir já está voltando para o ponto de início. Já alterei o tamanho do diametro e ainda assim estou com esse problema.



//ator
let yAtor = 366
let xAtor = 115

//variável colisão
let colisao = false;

//meus pontos
let meusPontos = 0;

function mostraAtor(){
  image(imagemDoAtor,xAtor, yAtor, 30, 30)

}


function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){
    yAtor -= 3
  }
  if (keyIsDown(DOWN_ARROW)){
    yAtor += 3
}
}


function verificaColisao(){
  //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
  for (let i = 0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i], wCarros[i], hCarros[i], xAtor, yAtor, 15)
    if (colisao){
      voltaAtorInicio();
    }
  }
}

function voltaAtorInicio(){
  yAtor = 366;
}


function incluiPontos(){
  fill(255,240,60)
  textAlign(CENTER);
  textSize(25);
  text(meusPontos, width / 5, 27);
}

function marcaPonto(){
  if(yAtor <15){
    meusPontos +=1;
    voltaAtorInicio();
  }
}
3 respostas

Consegui resolver. Estava colocando o tamanho e altura do carro em lista, porém era número inteiro.

function verificaColisao(){
  //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
  for (let i = 0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i], wCarros, hCarros, xAtor, yAtor, 30)
    if (colisao){
      print("Teste");
      voltaAtorInicio();
      somDaColisao.play();
      if(pontosMaiorQueZero()){
        meusPontos -= 1;
      }
    }
  }
}

Oi Wolney, tudo bem?

Obrigado pela paciência em aguardar uma resposta!

Fico feliz que tenha conseguido uma solução para o seu problema. Como você observou, os valores de altura e largura dos carros devem ser colocados como números inteiros, pois não compõem nenhuma lista para essas medidas.

Desta forma, o código seria escrito da seguinte maneira:


    colisao = collideRectCircle(xCarros[i], yCarros[i], wCarros, hCarros, xAtor, yAtor, 30);

Recomendo, que caso se sinta confortável em compartilhar seu conhecimento, interagir com outros estudantes, trocar experiências e fazer networking, participe do Discord oficial da Alura de alunas e alunos:

Caso tenha outras dúvidas, estarei à disposição para te ajudar!

Grande abraço e bons estudos!

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