Morituri
YaBB Newbies
Offline
Posts: 2
collision
Nov 23rd , 2009, 10:24am
hi I want the beetle to bounce off the same way like at the wall also with the square but it often goes into the square? can so please help? float zoogX;//Käferkoordinaten float zoogY; float korperR= random(1,255);//Farbe des Körpers des Käfers float korperG= random(1,255); float korperB= random(1,255); float kastenR= random(1,255);//Farbe des Kastens float kastenG= random(1,255); float kastenB= random(1,255); float legs1; //Für Bewegung der Beine float legs2; float legs3; float hochrunter = random(-2,2);//Für Bewegung des Käfers float linksrechts = random(-2,2); float hochrunterk = random(-2,2);//Für Bewegung des Kastens float linksrechtsk = random(-2,2); float kastenX;//Hinderniskoordinaten float kastenY; void setup(){ size (300,300); background(255); smooth(); zoogX= random(30,width-30); zoogY= random(35,height-27.5); frameRate(40); noCursor(); //keine Cursor kastenX= 130; kastenY= 130; } void draw(){ background(255); Figur(); Bewegen(); Kollidieren(); Kasten(); println(frameRate); } void Bewegen(){ //KÄFER BEWEGEN zoogY+= hochrunter; zoogX+= linksrechts; } void Figur(){ //FIGUR ZEICHNEN rectMode(CENTER); stroke(0); //strokeWeight(0); noStroke(); fill(0); //Kopf beginShape(); curveVertex(zoogX-20, zoogY); curveVertex(zoogX-15, zoogY-20); curveVertex(zoogX-10, zoogY-30); curveVertex(zoogX, zoogY-35); curveVertex(zoogX+10, zoogY-30); curveVertex(zoogX+15, zoogY-20); curveVertex(zoogX+20, zoogY); endShape(); stroke(30); //Beine legs1= random(-3,3); legs2= random(-3,3); legs3= random(-3,3); line(zoogX-10,zoogY+10,zoogX-30,zoogY+10-legs1); line(zoogX+10,zoogY+10,zoogX+30,zoogY+10-legs1); line(zoogX-10,zoogY,zoogX-30,zoogY-legs2); line(zoogX+10,zoogY,zoogX+30,zoogY-legs2); line(zoogX-10,zoogY-10,zoogX-30,zoogY-10-legs3); line(zoogX+10,zoogY-10,zoogX+30,zoogY-10-legs3); fill(korperR,korperG,korperB); //Körper ellipse(zoogX,zoogY,50,50); fill(0); //Punkte ellipse(zoogX-10,zoogY-10,11,11); ellipse(zoogX+10,zoogY-10,11,11); ellipse(zoogX-10,zoogY+10,11,11); ellipse(zoogX+10,zoogY+10,11,11); fill(255); //Augen ellipse(zoogX-8,zoogY-27.5,4,4); ellipse(zoogX+8,zoogY-27.5,4,4); //Strich zw. Flügel,Schnurrbart } void Kasten(){ //KASTEN ZEICHNEN rectMode(CENTER); fill(kastenR,kastenG,kastenB); rect(kastenX,kastenY,20,20); if(kastenY-10<=0|| kastenY+10 >= height ){ //Wandobenunten hochrunterk *= -1; KastenRGB(); } if(kastenX-10<=0|| kastenX+10 >= width ){ //Wandlinksrechts linksrechtsk *= -1; KastenRGB(); } //kastenY+= hochrunterk; //Bewegen //kastenX+= linksrechtsk; } void KastenRGB(){ kastenR= random(1,255); kastenG= random(1,255); kastenB= random(1,255); } void KorperRGB(){ korperR= random(1,255); korperG= random(1,255); korperB= random(1,255); } void Kollidieren(){ //KÄFER KOLLIDIERT MIT WAND/KASTEN if(zoogY-35<=0|| zoogY+27.5 >= height ){ //Kollision mit Wand(oben/unten) hochrunter*= -1; KorperRGB(); } if(zoogX-30<=0|| zoogX+30 >= width ){ //Kollision mit Wand(links/rechts) linksrechts *= -1; KorperRGB(); } if(zoogY-35 >= kastenY-20 && zoogY-35 <= kastenY-18){//KASTEN oben if(zoogX-30 >= kastenX-20 && zoogX-30 <= kastenX+20){//falls linke seite des käfers über kasten Hochrunter(); } else if(zoogX+30 >= kastenX-20 && zoogX+30 <= kastenX+20){//falls rechte seite des käfers über kasten hochrunter*= -1; hochrunterk*= -1;//hochrunterk= -1*hochrunter; KorperRGB(); KastenRGB(); } else if(zoogX-30 <= kastenX-20 && zoogX+30 >= kastenX+20){//falls linke seite des käfers links des kasten ist und rechte seite rechts des kastens allso nur die mitte des käfers über dem kasten Hochrunter(); } } else if(zoogY+27.5 >= kastenY+20 && zoogY+27.5 <= kastenY+18){//KASTEN unten (beinahe gleich wie kasten oben) if(zoogX-30 >= kastenX-20 && zoogX-30 <= kastenX+20){//falls linke seite des käfers unter kasten Hochrunter(); } else if(zoogX+30 >= kastenX-20 && zoogX+30 <= kastenX+20){//falls rechte seite des käfers unter kasten Hochrunter(); } else if(zoogX-30 <= kastenX-20 && zoogX+30 >= kastenX+20){//falls linke seite des käfers links des kasten ist und rechte seite rechts des kastens allso nur die mitte des käfers unter dem kasten Hochrunter(); } } else if(zoogX-30 >= kastenX-20 && zoogX-30 <= kastenX-18){//KASTEN links (beinahe gleich wie kasten oben) if(zoogY-35 >= kastenY-20 && zoogY-35 <= kastenY+20){//falls linke seite des käfers unter kasten Linksrechts(); } else if(zoogY+27.5 >= kastenY-20 && zoogY+27.5 <= kastenY+20){//falls rechte seite des käfers unter kasten Linksrechts(); } else if(zoogY-35 <= kastenY-20 && zoogY+27.5 >= kastenY+20){//falls linke seite des käfers links des kasten ist und rechte seite rechts des kastens allso nur die mitte des käfers unter dem kasten Linksrechts(); } } else if(zoogX+30 >= kastenX+20 && zoogX+30 <= kastenX+18){//KASTEN links (beinahe gleich wie kasten oben) if(zoogY-35 >= kastenY-20 && zoogY-35 <= kastenY+20){//falls linke seite des käfers unter kasten Linksrechts(); } else if(zoogY+27.5 >= kastenY-20 && zoogY+27.5 <= kastenY+20){//falls rechte seite des käfers unter kasten Linksrechts(); } else if(zoogY-35 <= kastenY-20 && zoogY+27.5 >= kastenY+20){//falls linke seite des käfers links des kasten ist und rechte seite rechts des kastens allso nur die mitte des käfers unter dem kasten Linksrechts(); } } } void Hochrunter(){ hochrunter*= -1; hochrunterk*= -1; KorperRGB(); KastenRGB(); } void Linksrechts(){ linksrechts *= -1; linksrechtsk *= -1; KorperRGB(); KastenRGB();}