Galera, estou fazendo um jogo e estou pegando de exemplo um código que vi na internet, e adaptando no meu conforme as necessidades, quando chegou na colisão ( a ultima parte do meu jogo já) estou com um problema, eu simplesmente nao consigo colocar ele no meu codigo pois da erro no if Gameover, gostaria que me explicassem o que acontece nessa parte do código para que eu possa adaptar ele em meu jogo
function Sprite(caminhoDaImagem, xInicial, yInicial) {
//restante do código...
this.colidiu = function(outro){
var colidiuNoXTopo = outro.x >= this.x && outro.x <= (this.x + this.largura);
var colidiuNoYTopo = outro.y >= this.y && outro.y <= (this.y + this.altura);
var colidiuNoXBase = (outro.x + outro.largura) >= this.x && (outro.x + + outro.largura) <= (this.x + this.largura);
var colidiuNoYBase = (outro.y + outro.altura) >= this.y && (outro.y + outro.altura) <= (this.y + this.altura);
return (colidiuNoXTopo && colidiuNoYTopo) || (colidiuNoXBase && colidiuNoYBase);
}
}
Desde já, muito obrigado
Não estou conseguindo fazer com que o "enemy", que no caso é o asteroide, colida com a nave e a mesma executar a função de destruir..
Alguém tem alguma ideia do que está dando errado?? Se está faltando algo, etc?!
Screenshots:
Galera, estou tentando fazer um sistema de colisões eficiente no canvas com javascript.
A forma mais básica seria adicionar todos os objetos em uma lista e sempre que o personagem se movesse, a lista seria varrida comparando a posição de cada objeto com a do personagem, levando em conta o espaço que os dois ocupam. Se algum objeto da lista se intersectar com o personagem, o tratamento de colisão seria realizado.
Mas percebemos que se tivermos um grande número de objetos no cenário. Este não seria uma forma inteligente de se fazer a coisa. Pois a busca de todos os objetos da lista incluindo a comparação realizada seriam muito custos.
Eu gostaria de verificar sempre se à um outro elemento na área do personagem sem ter que varrer todos os elementos da tela. Algo semelhante ao onmouseover, mas para elementos.
Alguém conheceria alguma (se possível, a melhor) forma de se fazer isso?