Hi leute
Also ich häng hier gerade an der Kollision in meinen Spiel.
Wenn der Spieler sich über eine Kachel bewegt soll sich die Kachel verfärben.
habe folgenden Code für die Kollision:
|
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
|
//CheckCollision()
void CGame::CheckCollision()
{
//Iterator für Tiles machen
list<CTile>::iterator ItTile = m_TileList.begin();
//rects für Tiles und Player holen
SDL_Rect RectTile;
SDL_Rect RectPlayer;
//Alle Tiles durchlaufen
while (ItTile != m_TileList.end())
{
//Rect des Tiles holen
RectTile = ItTile->GetRect();
RectPlayer = m_pPlayer->GetRect();
if(RectPlayer.y <= RectTile.y+RectTile.h &&
RectPlayer.y >= RectTile.y ||
RectPlayer.y + RectPlayer.h <=RectTile.y+RectTile.h &&
RectPlayer.y + RectPlayer.h >=RectTile.y)
{
if(RectPlayer.x <= RectTile.x +RectTile.w &&
RectPlayer.x >= RectTile.x ||
RectPlayer.x + RectPlayer.w <=RectTile.x+RectTile.w &&
RectPlayer.x + RectPlayer.w >=RectTile.x )
{
//Kollision ist aufgetreten also Tile ist berührt worden
ItTile->ChangeActive(true);
}
}
ItTile++;
}
}
|
So das Problem an der Sache ist nicht dass die Kollision gar nicht funktioniert, sondern teilweise:wenn die Figur nach oben oder unten läuft, färben sich immer zwei nebeneinander liegende kacheln(die auf der der Spieler steht und die links von dieser). Wenn ich nach links oder rechts gehe und den Spieler einigermaßen mittig auf der Kachel laufen lasse, funktioniert es. :?
Bin ziemlich ratlos hat einer ne idee?
mfg
Lares