Slick2d | Erkennung von Objektkollisionen
Das Problem:
Ich weiß, dass dies schon oft gefragt wurde, aber ich habe keine guten Antworten gefunden.
Ich habe also einige Objekte für mein Spiel. Was ist nun der beste Weg, um Kollisionen zu überprüfen?
Links:
Code Erklärung:
Ich habe eine Liste von Entitäten in meiner Weltklasse:
List<Entity> entities = new ArrayList<Entity>();
// The list in the World class
Ich aktualisiere sie mit diesem Code (nur wenn innerhalb des Sichtbereichs):
public void update(GameContainer gc, int delta) {
for (int i = 0; i < entities.size(); i++) {
entities.get(i).update(gc, delta);
}
}
// Update entities
Jetzt möchte ich die Aktualisierungsmethode der Entitäten auf Kollisionen überprüfen.
Ich habe dies als meine Update-Methode versucht:
@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
Und dies ist die aktuelle Methode für Instersekte:
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
Derzeit gibt die intersects-Methode immer true zurück. Aber warum?