3
respostas

A colisão não funciona para todos

let xMonstros = [600, 600, 600, 600, 600, 600]
let yMonstros = [38, 93, 147, 205, 259, 310]
let velocidadeMonstros = [8, 5, 6, 3.3, 4, 6.5]

function mostrarMonstros(){
for(let i = 0; i < imagemMonstros.length; i++){
image(imagemMonstros[i], xMonstros[i],yMonstros[i], 50, 50)}}

function movimentoMonstros(){
for(let i = 0; i < imagemMonstros.length; i++){
  xMonstros[i] -= velocidadeMonstros[i]
}}

function retornarMonstros(){
for(let i = 0; i < imagemMonstros.length; i++){
  if(xMonstros[i] < -50){xMonstros[i] = 600}}
}

function colisao(){
for(let i = 0; i < imagemMonstros.length; i++){
colidiu = collideRectRect(xMonstros[i],yMonstros[i],50,50,xPersonagem,yPersonagem,50,50)}
print(colidiu)}

uma coisa que eu não entendi no meu código é que....só o monstro 6 recebe colisão...é como se os outros não existissem kkkkkk

3 respostas

Fala ai Edmilson, tudo bem? Posso te pedir um favor? Compartilha o link do projeto do P5 Web, assim eu consigo simular o problema por aqui e analisá-lo com mais calma.

Apenas lendo o código fica um pouco mais dificil.

Fico no aguardo.

https://editor.p5js.org/white_angel1331/sketches/Zd0q8d5AW

Muito obrigado pela resposta tão rápida!

Fala Edmilson, como vai?

Muito obrigado por compartilhar seu projeto com a gente e segue a solução:

  • Havia uma chave fechando a verificação antes de reposicionar o personagem, fazendo que a colisão acontecesse apenas na primeira faixa.

Isso pode ter ocorrido, pois o código não estava identado. Ao identar seu código, encontrei o erro e segue o código identado, reconhecendo a colisão em todas as faixas.

function colisao(){
    for(let i = 0; i < 6; i++){
      colidiu = collideRectCircle(xMonstros[i], yMonstros[i], cMonstros[i], aMonstros[i], xPersonagem, yPersonagem, 25)
    if(colidiu){
          xPersonagem = 230 
          yPersonagem = 360}
        }
}

Espero ter ajudado, bons estudos e conte com a Alura!

: )