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:
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?