3
respostas

Colisão sem utilizar a biblioteca do p5.

Boa tarde,

Tentei escrever o código de colisão, baseado na lógica da colisão do jogo Pong. Da forma que eu escrevi o cód, meu ator volta para a posição 366, sem mesmo tocar em nenhum carro. Vi que algumas pessoas conseguiram resolver, não quero apenas copiar, prefiro entender e caminhar com minhas próprias pernas e também caso eu queira utilizar outros editores não quero ficar preso nas bibliotecas do p5.

//listas
let xCarros = [600, 600, 600];
let yCarros = [40, 96, 150];
let velocidadeCarros = [2, 2.5, 3.2];
let comprimentoCarro = 50;
let alturaCarro = 40;


//códigos do carro

function mostraCarro(){
  for(let i = 0; i < imagemDoCarros.length; i = i +1){
     image(imagemDoCarros[i], xCarros[i], yCarros[i], comprimentoCarro, alturaCarro );  
  }  
}

function movimentaCarro(){
  for (let i = 0; i < imagemDoCarros.length; i = i + 1){
    xCarros[i] -= velocidadeCarros[i];
  }
}

function voltaPosicaoInicialDoCarro(){
  for (let i = 0; i < imagemDoCarros.length; i = i + 1){
    if (passouTodaATela(xCarros[i])){
      xCarros[i] = 600;
    } 
  }
}

function passouTodaATela (xCarro){
  return xCarro < - 50;

}

function colisao (){
  for (let i = 0; i < imagemDoCarros.length; i = i + 1){
    if (xAtor < xCarros[i] + comprimentoCarro &&
       yAtor < yCarros[i] + alturaCarro &&
       yAtor > yCarros[i]){
      yAtor = 366;
    }
  }

}



3 respostas

Consegui chegar ao resultado que eu esperava. Inverti a ordem inicial do if, começando pelo xCarros[1], depois de vários testes, enfim deu certo!!!

//listas
let xCarros = [600, 600, 600];
let yCarros = [40, 96, 150];
let velocidadeCarros = [2, 2.5, 3.2];
let comprimentoCarro = 50;
let alturaCarro = 40;


//códigos do carro

function mostraCarro(){
  for(let i = 0; i < imagemDoCarros.length; i = i + 1){
     image(imagemDoCarros[i], xCarros[i], yCarros[i], comprimentoCarro, alturaCarro);  
  }  
}

function movimentaCarro(){
  for (let i = 0; i < imagemDoCarros.length; i = i +1){
    xCarros[i] -= velocidadeCarros[i];
  }
}

function voltaPosicaoInicialDoCarro(){
  for (let i = 0; i < imagemDoCarros.length; i = i+ 1){
    if (passouTodaATela(xCarros[i])){
      xCarros[i] = 600;
    } 
  }
}

function passouTodaATela (xCarro){
  return xCarro < - 50;

}

function colisao(){
  for (let i = 0; i < imagemDoCarros.length; i = i +1){
    if (xCarros[i] < xAtor + comprimentoAtor &&
      yCarros[i] < yAtor + alturaAtor &&
       xCarros[i] + comprimentoCarro > xAtor &&
       yCarros[i] + alturaCarro > yAtor){
       yAtor = 366;
    }
  }
}

Olá Otacilio , como vai?

Muito obrigada em compartilhar sua resposta conosco. É bom ver o diferentes pontos de vista isso nos ajuda e enriquece nosso conhecimento!

Parabéns por responder à atividade e pelo empenho. Outra maneira de compartilhar seu codigo é pelo LinkedIn quanto subir como projeto no Github.

Pois assim começa a criar seu portifolio no GitHub e movimenta mais seu LinkedIn.

Abraços e ótimos estudos! :)

Se está resposta te ajudou, por favor, marca como solucionado ✓. Continúa com seus estudos :)

valeu!!!