Es gibt keine if-Schleife. Warum willst du bei einer Kollision den Iterator auf den Start der Liste setzen? Dann fängst du bei jeder Kollision an die Liste von vorne zu durchlaufen.
Pardon
eine if Schleife gibt es wirklich nicht
Die Shot List habe ich jetzt an anderer Stelle auf Anfang gesetzt und siehe da, es funktioniert
Hier noch einmal ein kurzer Auszug aus meinem Code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
if (es != ShotList->end())
es++;
}
if (asteroidboundingBox.intersects(PlayerBox)) {
if (*pPlayer->phealth >= 0.f)
*pPlayer->phealth -= 0.5f;
}
if (it != asteroidList->end()) {
it++;
es = ShotList->begin();
}
|
Was die Texturen betrifft
Jeder Asteroid hat seine eigene Texture? Das ist keine gute Idee. Du solltest die Texture nur einmal laden und dann dem Asteroiden übergeben.
, das werde ich noch überarbeiten, da wie gesagt, das mein erstes wirkliches Spiel ist
Optimiert ist das ganze auf jeden Fall nicht aber, ich werde nach dem letzten Feinschliff mich darum kümmern, um mich an diesen Post erinnern!
Danke an Alle für eure Hilfe, ich wird mich jetzt nochmal dransetzten, das ganze Durchdenken, und dann wie vorgeschlagen, das auch auf std::Vector umstellen. Da das mein erstes Spiel ist, und ich (wie sicher nicht zu übersehen war) hier und da noch in einigen C++ Belangen hinterherhinke möchte ich mich besonders für eure Geduld bedanken!