Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Vailor1

Frischling

  • »Vailor1« ist der Autor dieses Themas

Beiträge: 42

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

1

21.10.2014, 19:32

SDL Kollisions Problem! Spieler geht immer durch eine Seite durch.

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.

2

21.10.2014, 19:53

Kollisionen an Ecken - [SDL] dürfte dir bei deinem problem helfen.

Edit: Oft hilft es auch das Problem zu Visualisieren, mal ein Rechteck malen und die Werte der If-Abfrage einzeichen und schauen ob das wirklich die gewünschten werte sind (Bin mir nicht sicher ob auch bei SDL Links Oben die Koordinate 0;0, wenn ja kannst du damit bestimmt ein Fehler entdecken)

Gruß Koschi
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Koschi« (21.10.2014, 19:58)


Vailor1

Frischling

  • »Vailor1« ist der Autor dieses Themas

Beiträge: 42

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

3

21.10.2014, 20:18

Danke für deinen Tipp aber immer wenn ich Schreibe:

Quellcode

1
RecObjekt.y > m_pPlayer->GetRect().y + m_pPlayer->GetRect().h



nimmt er die oberkante des Fensters

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

21.10.2014, 20:27

Cursor in Zeile 11 setzen, F9 drücken. F5 drücken und spielen, bis das Spiel stoppt. Werte an schauen (Maus-Cursor drüber halten) und drüber nachdenken, was da nicht stimmt. F10 führt die aktuelle Code-Zeile aus. F11 springt in die Funktion hinein, die als nächstes ausgeführt werden soll.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige