Wieder einmal melde ich mich mit einem Problem an alle Programmierer!!
Ich arbeite gerade an einem neuen Spiel, einziges Problem: Die Kollisionserkennung!!
Als Sie mit meinem Code nicht funktioniert hat, habe ich es mit der Kollisionserkennung aus dem Buch versucht, welche eigentlich funktionieren müsste (Schuss und Enemy bewegen Sich zwar auf der
x-Achse, aber trotzdem...)
Hier mal die ganze Klasse der Kollisionerkennung:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
void CGame::CheckCollisions ()
{
list<CShot> *ShotList = m_pPlayer->GetShotList ();
list<CEnemyShot>::iterator ItEnemyShot = m_EnemyShotList.begin ();
list<CShot>::iterator ItShot;
SDL_Rect RectEnemyShot;
SDL_Rect RectShot;
while (ItEnemyShot != m_EnemyShotList.end () )
{
RectEnemyShot = ItEnemyShot->GetRect ();
for (ItShot = ShotList->begin ();
ItShot != ShotList->end ();
++ItShot)
{
RectShot = ItShot->GetRect ();
if (RectShot.y < RectEnemyShot.y + RectEnemyShot.h &&
RectShot.y + RectShot.h > RectEnemyShot.y &&
RectShot.x < RectEnemyShot.x + RectEnemyShot.w &&
RectShot.x + RectShot.w > RectEnemyShot.x)
{
ItEnemyShot->SetAlive (false);
ItShot->SetAlive (false);
}
}
if (ItEnemyShot->IsAlive ()==true )
ItEnemyShot++;
else
ItEnemyShot=m_EnemyShotList.erase (ItEnemyShot);
}
}
|
Hoffentlich kann mir jemand helfen!!
Cf