Bom dia pessoal.
Estou desenvolvendo um jogo com java e swing e preciso adicionar blocos na tela do jogo, de forma que o sprite principal do jogo não consiga passar por cima dos blocos. Neste caso, ao bater em um bloco o personagem não consegue avançar. Da mesma forma, preciso testar se um sprite colidiu com outro.
Agradeço.
Olá Danyel,
Minha sugestão é usar o método intersects da classe Rectangle do próprio java, segue a documentação
http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/Rectangle.html#intersects(java.awt.Rectangle)
[]s
Estou trabalhando somente com JFrame, e imageIcons. Os sprites e os blocos são todos imageIcons. Será que funciona mesmo assim com o método intersects, que não estou utilizando nenhum objeto da classe retangle? Valeu.
Danyel,
Mesmo você trabalhando com imageIcons, eu imagino que vocês tenhas as coordenadas, largura e a altura destes elementos certo?
Caso sim, basta você criar instâncias da classe Rectangle com esses valores de cada elemento e realizar a comparação.
Uma boa idéia seria encapsular o Rectangle e os imageIcons em classes, para evitar ficar criando várias instancias de Rectangle.
Espero ter sido claro =)
[]s
Ok. Vou tentar desenvolver. Logo te mando um feedback.
Valeu.
Só tem que ter cuidado com algumas coisas, se for a ponta de uma nave arredontada por exemplo, aí pode gera uma colisão sem que realmente o objeto tenha colidido visualmente.
Inves de ImageIcons, voce pode desenhar diretamente em um componente o jogo inteiro, e fazer colisoes a partir de retangulos.
De uma olhada na parte de Java no PontoV que pode te ajudar.