私は、ボールやパックなどの丸みを帯びたオブジェクトを含むJavaゲームを開発しています(ただし、開発言語は実際には重要ではありません)。現在、衝突に取り組んでいます。私はタイマーを使用しているので、すべてのフレームで衝突が発生するかどうかをチェックします。
これは、オブジェクトの右上の部分を表すグラフです。
オブジェクトの中心は点[0,0]で表され、半径は10ピクセル、単位はピクセルです。
これで、オブジェクト(たとえばobj_1
)が正方形/ひし形(青い線)の場合、別のオブジェクト( obj_2
)が衝突するかどうかを確認するには、それらの座標を取得するだけMath.abs(obj_1.x - obj_2.x) + Math.abs(obj_1.y - obj_2.y) <= radius
で、衝突があるかどうかを確認できます。
ただし、円の形(赤い線)の場合、より多くのスペースが必要であり、この占有スペースが直線で囲まれていないため、問題はより複雑になります。もちろん、いくつかの値を丸める必要があります(たとえば、前のグラフで、衝突をチェックしたい場合は、x = 2
9.5から10のように見えるy値を丸める必要があります)。しかし、私はこの式を取得する方法がわかりません。どんな助けでも大歓迎です。