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

Colidindo apenas parte de cima do Ator

Ola,

O código está quase perfeito, porém a parte de baixo do Ator não está colidindo com os carros. Apenas a parte de cima, alguém mais com este problema? https://editor.p5js.org/lucianof.crispim/sketches/pgjHU9TpP

//variáveis do ator
let xAtor = 80;
let yAtor = 370;
let wAtor = 32;
let hAtor = 32;
let colisao = false

function mostraAtor(){
  image(imagemDoAtor, xAtor, yAtor, wAtor, hAtor);
}

//movimentos da vaquinha
function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){yAtor -= 4;}
  if (keyIsDown(DOWN_ARROW)){yAtor+= 4;}
  if (keyIsDown(LEFT_ARROW)){xAtor -= 4;}
  if (keyIsDown(RIGHT_ARROW)){xAtor += 4;}
}

//verificar colisão com os carros collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
function verificarColisao(){
  for (let i = 0; i < imagemCarros.length; i = i + 1){
  colisao = collideRectCircle(xCarros[i], yCarros[i], wCarros[i], hCarros[i], xAtor, yAtor, 16)
    if (colisao){
    colidiu();
    }
  }
}

function colidiu(){
  yAtor = 370
}
2 respostas
solução!

Na verdade esta colidindo sim irmão. So que a hitbox não esta no mesmo lugar que a imagem. Adicione 15 no xAtor e yAtor na função verificarColisao para deixar a hitbox mais realista com a posição da imagem:

function verificarColisao(){
  for (let i = 0; i < imagemCarros.length; i = i + 1){
  colisao = collideRectCircle(xCarros[i], yCarros[i], wCarros[i], hCarros[i], xAtor + 15, yAtor + 15, 15)
    if (colisao){
    colidiu();
    }
  }
}

Obrigado Klaus!