レンガ造りのゲームを作成しようとしていますが、衝突検出に関していくつかの問題に遭遇しました。ブリック ブレーカーをプレイしたことがある場合は、パドルでボールが左に移動しているときにトップの左側を打った場合、ボールは右に移動し続けることを知っています。ただし、この場合右側に当てると、ボールの方向が変わります。また、パドルの側面に当てると、Y 軸で跳ね返ります。パドルの上部の作り方がわからないので、コードを持っていないのでお見せできません:) これは私が側面に使用しているコードです:
Rectangle rect1 = new Rectangle((int) paddleDir, 570, imsLoader.getImage("paddle1").getWidth(), imsLoader.getImage("paddle1").getHeight());
Rectangle rect2 = new Rectangle((int) ballX, (int) ballY, imsLoader.getImage("ball").getWidth(), imsLoader.getImage("ball").getHeight());
if (rect1.intersects(rect2))
{
if (rect1.x == rect2.getMaxX() || rect1.getMaxX() == rect2.x)
{
ballVX = -ballVX;
clipsLoader.play("pattleHit", false);
}
else
{
ballVY = -ballVY;
ballY += 0.05;
clipsLoader.play("pattleHit", false);
}
}
何が起こるかというと、ボールが側面にぶつかると、パドルを通り抜けてあちこちに行き、反対側の端に到達すると、上または下になります!