Slick2d | Wykrywanie kolizji obiektów

Problem:

Wiem, że o to pytano wiele razy, ale nie znalazłem żadnych dobrych odpowiedzi.
Więc mam kilka elementów do mojej gry, teraz jaki jest najlepszy sposób sprawdzania kolizji?

Spinki do mankietów:

Gra (zakończona)

Objaśnienie kodu:
Mam listę podmiotów w mojej klasie światowej:

List<Entity> entities = new ArrayList<Entity>();
// The list in the World class

Aktualizuję je tym kodem (tylko jeśli wewnątrz zakresu widoku):

public void update(GameContainer gc, int delta) {
    for (int i = 0; i < entities.size(); i++) {
        entities.get(i).update(gc, delta);
    }
}
// Update entities

Więc teraz chcę sprawdzić kolizję wewnątrz metody aktualizacji encji.

Próbowałem tego jako mojej metody aktualizacji:

@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

A to jest obecna metoda instancji:

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

Obecnie metoda przecięć zawsze zwraca wartość true. Ale dlaczego?

questionAnswers(1)

yourAnswerToTheQuestion