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

Em algumas faixas, o ator colide sem encostar no carro. Além disso, quando colide, a tecla para movimentar o ator para cima fica travada.

Vi cada tópico no forum, mas não consegui encontrar uma solução - e revi o projeto também, mas não encontrei nada. Tô tentando entender o porquê disso para continuar o curso.

Link do projeto: https://editor.p5js.org/ImRickelmy/sketches/BqKhvA-gB

2 respostas
solução!

Olá Rickelmy.

dei uma olhada no seu código e encontrei o problema. Na sua função

function verificarColisao(){
 for (let i = 0; i < imagemCarros.length; i = i + 1){
   colisao = collideRectCircle (xCarros [i], yCarros [i], comprimentoCarros [i], alturaCarros [i], xVaquinha, yVaquinha, 24, 21);
   if (colisao){
     colidiu();
   }
 }
}

você coloca os parâmetros comprimento[i] e altura[i], porém se você for no seu arquivo carros.js você vai ver que comprimentoCarros e alturaCarros não estão em uma lista.

//listas carros
let xCarros = [600, 600, 600];
let yCarros = [45, 100, 155];
let velocidadeCarros = [2, 2.5, 3.2];
let comprimentoCarros = 40;
let alturaCarros = 32;

Quando você coloca comprimentoCarros [i] e alturaCarros [i] no seu for de sua função, o JavaScripit vai ler como se essas variáveis fossem listas e vai tentar pegar os valores da lista usando o valor de [i] como referência de posição, ou seja, se i for 0 ele vai buscar o valor na posição 0, se i for 1 vai buscar na posição 1 e assim por diante.

Como as variáveis comprimentoCarros e alturaCarros não são listas, você deve passar elas sem colocar o [i], passa apenas o nome das variáveis.

Muito obrigado, Bruno! Eu não reparei nesse detalhe. ;)