oii , estou fazendo um jogo básico pra aprender mais sobre java, mais estou com problemas na parte de colisão de objetos para fazer o player perder a vida(OBS: os 2 objetos são JLabel), alguma dica?
Opa, tudo bem? Então mano, se você quer usar uma imagem pra representar o player, usa a classe Image. Com JLabel funciona também, mas se você quiser um suporte maior para imagens, use isso . Mas indo para a sua pergunta, eis a solução
:
public Rectangle getBounds(){
return new Rectangle(X, Y, WIDTH, HEIGHT);
}
Esse método retorna uma hitbox, por assim dizer. Ela deve ser implementada na classe do Player ou em qualquer outra classe que represente uma entidade que possui colisão. o X é a posição horizontal do player, com base no Frame ou Panel em que ele está inserido. O Y é a mesma coisa, só que na vertical, o WIDTH é o tamanho da imagem na horizontal e o HEIGHT é na vertical. Então, retorna exatamente um retângulo que fica no seu player. Se quiser testar, tente pintar esse método, pra ver o que acontece. Valeu! Qualquer dúvida pode perguntar.
Assumindo que você tem dois objetos do tipo JLabel
chamados objeto1
e objeto2
:
Rectangle boundBox1 = objeto1.getBounds();
Rectangle boundBox2 = objeto2.getBounds();
if (boundBox1.intersects(boundBox2)) {
// objeto1 e objeto2 colidiram
}