Hi zusammen,
ich weiß das Thema wurde schon oft genug behandelt und hab mir auch bereits den ein oder anderen Thread angeschaut. Trotz allem weiß ich keine Lösung.
Also ich habe 2 bewegende Rectangle zur Kollisionsüberprüfung habe ich diese in eine geschachtelte Schleife gesteckt und prüfe mithilfe von intersects auf eine Schnittstelle, wenn diese besteht, werden beide Rectangles gelöscht.
Mein Problem, die Kollision wird nicht immer erkannt sondern nur manchmal. Hab bereits ein ähnliches Beispiel hier im Forum gefunden, der das gleiche Problem hatte, nur leider half es bei mir nichts.
Ich poste mal nur ein Code Fetzen, solltet ihr mehr Code benötigen schreit bitte
Für Verbesserungen bin ich natürlich immer offen. Hab noch keine Erfahrung in der Sparte, vielleicht ist dies ja ein häufigeres Problem. Danke.
ich weiß das Thema wurde schon oft genug behandelt und hab mir auch bereits den ein oder anderen Thread angeschaut. Trotz allem weiß ich keine Lösung.
Also ich habe 2 bewegende Rectangle zur Kollisionsüberprüfung habe ich diese in eine geschachtelte Schleife gesteckt und prüfe mithilfe von intersects auf eine Schnittstelle, wenn diese besteht, werden beide Rectangles gelöscht.
Mein Problem, die Kollision wird nicht immer erkannt sondern nur manchmal. Hab bereits ein ähnliches Beispiel hier im Forum gefunden, der das gleiche Problem hatte, nur leider half es bei mir nichts.
Ich poste mal nur ein Code Fetzen, solltet ihr mehr Code benötigen schreit bitte
Für Verbesserungen bin ich natürlich immer offen. Hab noch keine Erfahrung in der Sparte, vielleicht ist dies ja ein häufigeres Problem. Danke.
Java:
public void prüfeKollisionRakete(){
Enumeration<Rakete> r = raketeListe.elements(); // raketeListe und meteorliste ist ein Vector
Enumeration<Meteor> m = meteorliste.elements();
while(r.hasMoreElements())
{
Rakete rak = r.nextElement();
while(m.hasMoreElements()){
Meteor meteor = m.nextElement();
if(rak.intersects(meteor)){
meteorliste.remove(meteor);
raketeListe.remove(rak);
punkte +=50;
punkteAnzeige.setText("Punkte: " + punkte);
}
if(rak.y<10){
raketeListe.remove(rak);
}
}
}
}
Zuletzt bearbeitet: