Kollisionsabfrage
-
Hallo Leute,
ich bin noch ziemlich grün hinter den Ohren was Programmierung angeht.
Ich möchte eine Kollisionsabfrage für eine art 2D Shooter programmieren.Hatte mir schon die anderen Threads zu "Kollisionsabfrage" angeschaut, aber irgendwie waren die Antworten nicht ganz was ich gesucht habe...
Der Spieler soll immer nur einen Schuss haben was ich mit einer bool Variable abfrage und er schießt auf 50 Gegner deren aktuelle Position ich in einem Array[3][50] realisiert habe.
irgendwie scheint sich aber ein logik fehler bei mir eingeschlichen zu haben, ich such jetzt schon seit stunden nach ner Lösung.
Es wird weder der Gegner als Tod markiert noch wird der Sound abgespielt bei einem Treffer, der schuss fliegt einfach weiter.if(babgefeuert == true) //Bool variable da immer nur 1 Schuss existiert { CPoint ptl; // erstellt den Punkt an dem sich der lazer befindet ptl.x = ixlazerPos; ptl.y = iylazerPos; CRect rectInvader; for(int i= 0,j = 0; j < 50; j++) { rectInvader.left = InvaderPos[i+0][j]; rectInvader.top = InvaderPos[i+1][j]; rectInvader.right = InvaderPos[i+0][j]+50; rectInvader.bottom = InvaderPos[i+1][j]+29; // Die Gegner sind 50 breit und 29 hoch if (rectInvader.PtInRect(ptl)) { PlaySound("Explosion.wav", NULL, SND_FILENAME | SND_ASYNC); // Explosions-Sound abspielen bei treffer InvaderPos[i+2][j] = 0; // Gegner als Tod markieren } } }
-
Hallo Vari,
setz mal einen Breakpoint auf Zeile 16 und schau Dir im Debugger die Rechtecke an.
Herzliche Grüsse
Walter