1

さまざまなサイズと位置の複数の円をキャンバスに描画しましたが、それらの間の衝突を検出する必要があります。

public void run() {         
            while(Run){
                if(!sHold.getSurface().isValid())
                    continue;

                c[0][cnum].r++;
                canvas = sHold.lockCanvas();
                canvas.drawRGB(02, 02, 150);
                Paint white = new Paint();
                white.setColor(Color.WHITE);
                if(c[0][cnum].x != 0 && c[0][cnum].y != 0)
                    canvas.drawCircle(c[0][cnum].x, c[0][cnum].y, c[0][cnum].r, white);
                if(cnum!=0)
                    for(int i=0; i<cnum; i++)
                        canvas.drawCircle(c[1][i].x, c[1][i].y, c[1][i].r, white);
                sHold.unlockCanvasAndPost(canvas);
                if(((c[0][cnum].x - c[0][cnum].r)<0)||((c[0][cnum].y-c[0][cnum].r)<0)||((c[0][cnum].y+c[0][cnum].r)>height)||((c[0][cnum].x+c[0][cnum].r>width))){
                    c[1][cnum].x = c[0][cnum].x;
                    c[1][cnum].y = c[0][cnum].y;
                    c[1][cnum].r = c[0][cnum].r;
                    broken = true;
                    break;
                }
            }
        }
4

2 に答える 2

6

レンダリング段階でそれを行うべきではありません。

ロジックを処理するときは、次のように円が交差しているかどうかを確認する必要があります。

v1 = circle1 の中心 v2 = circle2 の中心

交差 = v1 - v2 < circle1radius + circle2radius

于 2012-06-12T21:45:33.667 に答える