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
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 |
// CheckCollision // void CGame::CheckCollision () { // Iteratoren für alle Listen erstellen list<CFirewall>::iterator iFirewalls; list<CMetal>::iterator iMetals = m_MetalList.begin (); // Rects für Metalle und Firewalls SDL_Rect RectFirewall; SDL_Rect RectMetal; // Alle Metalle durchlaufen while (iMetals != m_MetalList.end () ) { // Rect der Metalle holen RectMetal = iMetals->GetRect (); // Alle Firewalls durchlaufen for (iFirewalls = m_FirewallList.begin (); iFirewalls != m_FirewallList.end (); ++iFirewalls) { // Rect der Firewall holen RectFirewall = iFirewalls->GetRect (); // Überschneiden sich die Rects? if (RectFirewall.y < RectMetal.y + RectMetal.h && RectFirewall.y + RectFirewall.h > RectMetal.y && RectFirewall.x < RectMetal.x + RectMetal.w && RectFirewall.x + RectFirewall.w > RectMetal.x) { // Ja, also gab es eine Kollision. Somit Firewall deaktivieren iFirewalls->SetAlive (false); } } iMetals++; } } // CheckCollision |
Zitat von »"Frede"«
Außerdem würde deine Sache mit Metal.x == Firewall.x usw. nicht funzen, da sich die Firewalls ja nicht in 50er Schritten (die Größe der Firewall- und der Steinsprites) bewegen.
Werbeanzeige