Ich versuchs mal kurz un knapp zu machen.
Ich programmiere derzeit einen 2D Sidescroller, doch ich habe Probleme damit die Kollision umzusetzen.
Mein Problem schaut nun so aus, dass die 3 Rechtecke/Objecte gezeichnet werden, ebenso wird auch der text ausgegeben, dass die Kollision statt findet, jedoch wird der bool wert für die Kollision nur bei
geändert.
Warum das so ist weiß ich nicht ^^
Zitat:
void object::check(){
int ox1=x1; //object x1
int ox2=x2; //object x2
int oy1=y1; //object y1
int oy2=y2; //object y2
float px=x; //player x
float py=y; //player y
if(px>ox1&&px<ox2&&py>oy1&&py<oy2){ //Kollisions abfrage
textprintf(buffer, font, 0, 0, makecol(100,255,125),"Kollision !"); // textausgabe falls kollision - libary spezifisch
col=true;} //bool wert für kollision
else col=false;
if(col==true){
up=false; //bool werte für steuerung
down=false;
left=false;
right=false;}
else{
up=true;
down=true;
left=true;
right=true;}
|
das ist die funktion der Klasse, die die Kollision erkennt/regelt (lies sich nur per "quote" machen, mit code tag wurde nicht alles angezeigt)
Code:
obj1.ini(0,0,200,200); // zeichnen der rechtecke/objekte
obj2.ini(200,200,350,500);
obj3.ini(500,200,650,500);
obj1.check(); // kollisionscheck
obj2.check();
obj3.check();
und das der aufruf in der main funktion.
Ich würd mich echt freuen, falls sich jemand die Zeit nimmt mal einen Blick drauf zu werfen um mich mit der Nase ins Code-Häufchen zu drücken ^^
€dit: so, ich hoffe das bild machts anschaulicher. Bild 1: "player im object" aber bewegung nicht eingeschränkt. Bild 2: "Player im "letzten" object, Bewegung wird wie gewollt eingeschränkt.
http://img14.imageshack.us/f/test1ij.jpg/