Hallo ich habe eine Frage wie dieser Fehler zustande kommt vorab ich habe mich im Internet und auch im Forum umgeguckt bin aber nicht fündig geworden.
Also mein Problem ist ich habe diese Kollisionsabfrage:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
void CGame::CheckCollisions()
{
SDL_Rect RecObjekt;
RecObjekt = m_pObject->GetRect();//m_pObjekt und m_pPlayer sind ein Zeiger von CSprite
if (RecObjekt.y + RecObjekt.h > m_pPlayer->GetRect().y &&
RecObjekt.y < m_pPlayer->GetRect().y + m_pPlayer->GetRect().h &&
RecObjekt.x + RecObjekt.w > m_pPlayer->GetRect().x &&
RecObjekt.x < m_pPlayer->GetRect().x + m_pPlayer->GetRect().w)
{
float x = m_pPlayer->GetRect().x;
float y = m_pPlayer->GetRect().y ;
Player.Collision(x, y);//Eine Funktion in der Klasse Player die die Koordinaten auf die vorherigen setzt
}
}
|
Und die Abfrage klapp auch soweit, also wenn der Spieler das Objekt berührt wird er davor gesetzt, aber dies funktioniert nur für die Rechte- und Unterseite wenn aber der Spieler von der Linken- oder Oberseite kommt dann glitscht er diagonal durch das Objekt. Ich weiß einfach nicht wo der Fehler ist ich hoffe ihr könnt mir helfen und wenn etwas fehlt oder ihr mehr Informationen braucht sagt bitte bescheid.
Schon mal danke im voraus.