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

Melhorando a colisão - uma solução

Após notar que a colisão estava ficando "bugada", percebi que era porque a imagem começava a ser "feita" a partir do eixo que fica na esquerda superior dela, então o ponto de colisão era exatamente lá, e quando passávamos o diametro, ele pegava a partir daquele ponto, fazendo com que a maior parte que fica embaixo, fosse conseguida ser atingida sem voltar o y do Ator. Para isso, a minha ideia foi criar um circulo que ficasse exatamente no centro da imagem e que fosse transparente, para não atrapalhar a visibilidade. Desta forma, fiz o seguinte código:

let xColisao = xPersonagem + comprimentoPersonagem/2;
let yColisao = yPersonagem + alturaPersonagem/2

//Função para mostrar o personagem
function mostraPersonagem(){
    image(imagemPersonagem,xPersonagem,yPersonagem, comprimentoPersonagem, alturaPersonagem);
  fill('rgba(0,255,0, 0)')
  circle(xColisao,yColisao,25)
}

Passei os parametros do circulo para o collideRectCircle e pronto :), o projeto não está finalizado ainda, mas está aqui o código: https://editor.p5js.org/GabrielFMontoni/full/UGPnvtkOr

2 respostas
solução!

Também coloquei o noStroke(); para retirar a borda do circulo e ficar a imagem certinha do ator :)

Olá Gabriel, tudo bem?

Parabéns pela sua solução criativa para melhorar a colisão em seu projeto! É muito legal ver como você conseguiu identificar o problema e criar uma solução eficiente para ele.

A ideia de criar um círculo transparente no centro da imagem é realmente ótima, pois permite que a colisão seja detectada de maneira mais precisa e eficiente. Além disso, o código que você compartilhou parece estar bem organizado e fácil de entender.

Continue assim, explorando novas ideias e soluções para os desafios que surgem em seus projetos.

Caso durante os seus estudos você tenha problemas ou dúvidas, recorra ao fórum, estaremos aqui para ajudá-lo.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software