저는 매우 새로운 프로그래머이고 배열에서 충돌을 감지하는 방법을 파악하려고합니다. 나는 그것을 생각해 보려고 노력했는데, 내가 생각했던 몇 가지 예를 발견했지만 지금까지는 그렇게하지 못했다.처리중인 배열의 사각형 충돌 감지
여기 내 코드가 있습니다.별로 중요하지 않습니다.
상자가 화면 상단에있을 때가끔 메시지가 표시되지만 이유는 확실하지 않습니다.
Box [] b = new Box[1];
float x,y,w,h;
void setup(){
size(800,800);
x=random(width);
y=random(height);
w=random(200);
h=random(200);
b[0] = new Box(x,y,w,h);
}
void draw(){
background(0);
x=random(width);
y=random(height);
w=25;
h=25;
for(int j = 0; j<b.length;j++){
for(int k = 0; k<b.length;k++){
if(j!=k){
b[j].contact(b[k]);
}
}
}
for(int i=0;i<b.length;i++){
b[i].run();
}
}
void keyPressed(){
if(key =='n'){
Box boxnew = new Box(x,y,w,h);
b = (Box[]) append(b,boxnew);
}
}
class Box{
float x,y,w,h,c1,c2,c3,ii,xmo,ymo;
Box(float mx,float my,float mw,float mh){
x=mx;
y=my;
w=mw;
h=mh;
c1=150;
c2=50;
c3=200;
xmo=1;
ymo=1;
}
void run(){
maker();
mover();
wcolli();
}
void maker(){
ii=random(-1,1);
c1+=ii;
c2+=ii;
c3+=ii;
fill(c1,c2,c3);
rect(x,y,w,h);
}
void mover(){
x+=xmo;
y+=ymo;
}
void wcolli(){
if(x>800-w||x<1){
xmo*=-1;
}
if(y>800-h||y<1){
ymo*=-1;
}
}
void contact(Box b){
if((b.x>=this.x&&b.x<=this.w||b.w>=this.x&&b.w<=this.x) && (b.h>=this.y||b.y<=this.h)){
println("hit");
}
if((b.y<=this.h&&b.y>=this.y||b.h<=this.h&&b.h>=this.y) && (b.x<=this.w||b.w>=this.x)){
println("hit");
}
}
}
질문 관련 .http : //stackoverflow.com/questions/23774684/android-rect-intersect-is-always-false/23775232#23775232 – Nepster