私はボールが画面上でバウンドしていて、衝突する可能性のある静的な四角形があり、跳ね返るはずです。ボールが矩形に衝突しているかどうかをテストする方法はすでにわかっていますが、それはうまくいきます。今度はボールが当たった矩形のどの辺を決定する必要があります。私は現在、誰もが、私はこれを改善することができますどのように任意のアイデアを持っています(四辺をテストするために動作しますが、コーナーに問題があるようです)このコード...円と矩形の衝突Android
if(Math.abs(ball.centerY-boundingBox.top) < ball.radius) {
// Hit the top
}
else if(Math.abs(ball.centerY-boundingBox.bottom) < ball.radius) {
// Hit the bottom
}
else if(Math.abs(ball.centerX-boundingBox.left) < ball.radius) {
// Hit the left
}
else if(Math.abs(ball.centerX-boundingBox.right) < ball.radius) {
// Hit the right
}
...をしようとしていますか?それとも、より良い解決策を思いつきますか?
私は、基本的には、衝突した後にどの辺が四角形に当たったのかを判断する必要があります。そして、私はすでに彼らが衝突するかどうかをテストする方法を考え出しました。
ありがとうございます!
最も近い点を見つけることについてのあなたの最後のコメントは、私が現在どのように私の初期衝突検出を行っているかです。私は、最も近い点が角であるかどうかをテストすることについてあなたの考えが好きです。それがコーナーであると仮定すると、それに基づいてどの側面を決定するかについてどのような考えがありますか?それが隅に向かって直接行っていないと仮定します。途中であなたの答えをありがとう! – DRiFTy
コーナーが2つの側面に属しているのでコーナーに当たっても固有の側面はありません。しかし、もしあなたが1つを選ぶ必要があれば、右上隅に当たったと仮定すると、コーナーから球の中心までのベクトルが垂直に近い場合は、上端を選択し、水平に近い場合は右端を選択しますこれはx座標とy座標の絶対値の比較です)、正確に45度であれば優先度なしです。 – Tommy
私は今、それがコーナーに当たったときにそれを選ぶように作った。あなたがいくつかの洞察力を持っているかもしれないちょっとした小さな問題...ボールが矩形の頂点を横切って本当にゆっくりと転がり、転倒しようとしているとき、角に達すると少し跳ね上がります。それでも同じ一般的な道をたどりますが、ちょうどよく見えません。コーナーはとてもうまく処理されているようですが、それではありがとうございます。 – DRiFTy