We closed this forum 18 June 2010. It has served us well since 2005 as the ALPHA forum did before it from 2002 to 2005. New discussions are ongoing at the new URL http://forum.processing.org. You'll need to sign up and get a new user account. We're sorry about that inconvenience, but we think it's better in the long run. The content on this forum will remain online.
Page Index Toggle Pages: 1
collision (Read 547 times)
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();}
Page Index Toggle Pages: 1