ユーザーが画面に描画する長方形でいっぱいの構造があります。これは、実行時にボールが跳ね返るための「封鎖」を意味します。を使用することを検討しRectangle.intersects()
ましたが、(十分な情報がない限り) intersects
true が返されたときにボールがどちらの方向に進んでいたかを知る方法がないことに気付きました。現在、私はこの大規模なロジックを使用して、ボールが特定の四角形の端に触れたときを検出しようとしていますが、まったくうまく機能していません。これを行うためのより良い方法がある場合、または以下のロジックを修正する方法がある場合は、これに関する提案をお待ちしております. ありがとうございました!
for (Rectangle rect : r)
{
int rx = rect.x;
int ry = rect.y;
int rh = rect.height;
int rw = rect.width;
//If the ball hits either side of the rectangle, change the x direction
if((loc.x > rx && loc.x > ry && loc.x < (ry + rh))||(loc.x < (rx + rw) && loc.x > rx && loc.x <(ry + rh)))
{dx *= -1;}
//If the ball hits either the top or bottom, change the y direction
if((loc.y > ry && loc.y > rx && loc.y < (rx + rw))||(loc.y < (ry + rh) && loc.y > ry && loc.y <(rx + rw)))
{dy *= -1;}
}
参考までに、またこれをもう少し読みやすくするために、r は描画されたすべての長方形を含むベクター、loc はボールが現在あるポイント、dx と dy はボールの移動方向 (1 または -1) です。