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

Erro - Exercício (Criando a colisão)

A vaquinha colide com apenas 1 único carro. Help

Carro.js:

//Carro
let larguraCarro = 55;
let alturaCarro = 30;

let velocidadeCarros = [4, 3, 5, 4, 6, 7]
let carrosY = [47, 100, 270, 155, 322, 215];
let carrosX = [600, 600, 600, 600, 600, 600]

function mostraCarro(){
  for (var contador = 0; contador < 6; contador++) {
    image(imagensCarros[contador], carrosX[contador], carrosY[contador], larguraCarro, alturaCarro);    
  }
}

function movimentaCarro(){
  for (var contador = 0; contador < 6; contador++) {
    carrosX[contador] -= velocidadeCarros[contador];   
  }
}

function voltaPosicaoOriginal(){  
  for (var cont = 0; cont < 6; cont++) {
    if (passouNaTela(carrosX[cont])) {
      carrosX[cont] = 600;
    }
  }
}

function passouNaTela(xCarro){
  return xCarro < - 60;
}

Ator.js

//Vaca
let alturaVaca = 27;
let larguraVaca = 27;
let atorY = 370;
let atorX = 50;

let colisao = false;

function mostraAtor(){
  image(imagemVaca, atorX, atorY, larguraVaca, alturaVaca);
}

function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){
    atorY -= 3;
  } else if (keyIsDown(DOWN_ARROW)){
    atorY += 3;
  } else if (keyIsDown(LEFT_ARROW)){
    atorX -= 3;
  } else if (keyIsDown(RIGHT_ARROW)){
    atorX += 3;
  } 
}

function verificaColisao(){
  for (var i = 0; i < imagensCarros.length; i++) {
    colisao = collideRectCircle(carrosX[i], carrosY[i], larguraCarro, alturaCarro, atorX, atorY, 15);
  } if (colisao == true) {
    colidiu();
  }
}

function colidiu(){
  atorY = 370;
}

sketch.js

function setup() {
  createCanvas(500, 400);
}

function draw() {
  background(imagemEstrada);
  mostraAtor();
  mostraCarro();
  movimentaCarro();
  movimentaAtor();  
  voltaPosicaoOriginal();
  verificaColisao();
}

index.html

<body>
    <script src="Carro.js"></script>
    <script src="p5.collide2d.js"></script>
    <script src="Imagens.js"></script>
    <script src="Ator.js"></script>
    <script src="sketch.js"></script>    
  </body>
2 respostas
solução!

É pq no na sua função de colisão, o if tá fora das chaves da condição. Se colocar dentro funcionará.

function verificaColisao(){
  for (var i = 0; i < imagensCarros.length; i++) {
    colisao = collideRectCircle(carrosX[i], carrosY[i], larguraCarro, alturaCarro, atorX, atorY, 15);
  } if (colisao == true) {
    colidiu();
  }
}

Obrigada Thiago, agora sim consegui fazer o jogo funcionar. :)