Howdy, ich bin am erweitern von dem Spiel in Kapitel12. Folgendes Problem zerbricht mir gerade den Kopf.
Nach dem der Laser einen Asteroiden getroffen hat, werden beide deaktiviert und an deren Position eine Explosionsanimation erzeugt. Das Spiel läuft dann auch eine ganze Weile ohne Probleme. Diese Weile hängt damit zusammen wie schnell die Explosionsanimation also wie groß der Wert von m_fAnimPhaseE ist.
Irgendwann (ca nach 3 Minuten bei: m_fAnimPhaseE += 15.0f * g_pTimer->GetElapsed ()
tauchen auf ein mal Explosionen am Bildschirm an verschiedenen Positionen auf, verschwinden wieder, tauchen wieder auf...
Was mich wundert ist das das ganze erst nach einer Weile geschieht. Die Liste für die Explosionen müsste eigentlich funktionieren, durchläuft wie es soll beginn->ende, löscht die nicht mehr gebrauchten Explos. Es sollten also eigentlich nirgends mehr alte Explionen gespeichert sein..
Vielleicht hat ja einer von euch eine Idee :idea: , unten ist mal etwas Codeschnipsel, denke das es irgendwie an diesem liegt, sonnst muss ich an anderer Stelle weitersuchen...
Mit: m_fAnimPhaseE += 8.0f * g_pTimer->GetElapsed ();
scheint es zu funktionieren aber die Animation ist viel zu langsam, wie bekommt man diese schneller ohne oben genanntes Problem zu erhalten(?)
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// Sprite für Explosion laden in Klasse CGame
m_pSpriteExplosion = new CSprite;
m_pSpriteExplosion->Load ("Data/Explosion.bmp", 16, 64, 64);
m_pSpriteExplosion->SetColorKey (255, 0, 255);
// Funktion UpdateE in Klasse CAstroid - Explosion update
void CAsteroid::UpdateE ()
{ // Animieren
m_fAnimPhaseE += 15.0f * g_pTimer->GetElapsed ();
// Prüfen, ob die Animation am Ende angelangt ist, wenn ja dann deaktivieren
if (m_fAnimPhaseE >= 16.0f)
m_bIsAliveE = false;
} // Update Explosion
|
[/code]