2
respostas

Colisão detectada mesmo sem que o Ator esteja na pista

Oi pessoal,

Estou tentando resolver o problema desse código faz um tempo. Por alguma razão, antes que o Ator esteja na pista, a colisão é detectada.

Alguém saberia identificar o problema? https://editor.p5js.org/gabdedw/sketches/2LNMo4Kzn

let xCarros = [600, 600,600, 600, 600, 600]; let yCarros = [40, 96,150, 210, 270, 318]; let velocidadeCarros = [2, 2.5, 3.2, 5, 3.3, 2.3]; let carrosComprimento = 50; let carrosAltura = 40;

function mostraCarro(){ for (let i = 0; i < imagemCarros.length; i++) { image(imagemCarros[i], xCarros[i], yCarros[i], carrosComprimento, carrosAltura)

} }

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

function voltaPosicaoInicialCarro() { for (let i = 0; i < imagemCarros.length; i++) if (passouTodaTela(xCarros[i])) { xCarros[i] = 600 } }

function passouTodaTela(xCarros) { return xCarros < -50;

}

2 respostas

Olá, tudo bem ? Os erros no seu código estão no ator.js, mais especificamente na função verificaColisaoAtor()

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

Olhe esse print e compare com seu código. Vc precisa colocar tudo depois do for entre chaves. Depois vc precisa dizer que a variável colisao é igual ao retorno da função collideRectCircle. E na condição if vc coloca a variável colisao de novo pois ela já recebeu o retorno, se colidiu ou não.

Além disso, vc não precisa colocar a função voltaAtorPosicaoInicial() na função draw(), pois assim o ator não vai sair do lugar nunca já que o y dele sempre será 366.

Se vc não conseguir resolver o problema ou não entender minha explicação sugiro vc rever a aula criando a colisão.

Oi Hálax,

Além de rever a aula sobre colisão algumas vezes eu já tinha até começado um novo código depois de tanto tempo tentando descobrir o que estava errado com esse!

Você foi certeiro, o problema, de fato, era as chaves - muitíssimo obrigada, agora posso dormir em paz :D