Slick2d | Detecção de colisão de entidades
O problema:
Eu sei que isso foi perguntado muitas vezes, mas eu não encontrei nenhuma boa resposta.
Então eu tenho algumas entidades para o meu jogo, agora qual é a melhor maneira de verificar colisões?
Links:
Explicação de código:
Eu tenho uma lista de entidades na minha classe mundial:
List<Entity> entities = new ArrayList<Entity>();
// The list in the World class
Eu os atualizo com este código (somente se dentro do intervalo de visão):
public void update(GameContainer gc, int delta) {
for (int i = 0; i < entities.size(); i++) {
entities.get(i).update(gc, delta);
}
}
// Update entities
Então agora eu quero verificar a colisão dentro do método de atualização de entidades.
Eu tentei isso como meu método de atualização:
@Override
public void update(GameContainer gc, int delta) {
for (Entity entity : world.entities) {
if (intersects(entity)) {
// world.remove(this);
}
}
}
// The update method of an entitiy
E este é o método atual de instersects:
public boolean intersects(Entity entity) {
if (entity instanceof Player) {
// Do nothing
} else {
if (shape != null) {
return this.getShape().intersects(entity.getShape());
}
}
return false;
}
// The intersects method of the abstract Entity class
Atualmente, o método de interseções sempre retorna true. Mas por que?