1

質問を理解するには、ゲームを説明する必要があります。ボールが画面に落ちてきて、ボールをクリックすると、その種類に基づいて別のボールに変わります。たとえば、1 つのボールをクリックすると、周囲のボールが一定時間固定されます。いくつかは爆発し、近くにあるものを破壊します。

凍結したボール ( body.setType(BodyType.STATIC)) があり、その隣の別のボールが爆発した場合 (キネティック ボールをより大きな静的ボールに設定)、衝突は検出されません。

静止物体の衝突を検出するにはどうすればよいですか? つまり、それらは動いていないので衝突するべきではありませんが、静的なオブジェクトがあり、次の瞬間に別の静的なオブジェクトがそれに触れているので、それは何かに数えるべきではないでしょうか?

さらに明確にする必要がある場合はお知らせください。

更新:うまくいくかもしれないアイデアがありますが、それには私が理解できないことをする必要があります。動的ボディを静的ボディのように動作させるにはどうすればよいですか? つまり、重力や衝突の影響を受けない動的なボディの位置を持つということですか?

4

3 に答える 3

0

APIを掘り下げた後、私はついに私を助ける方法を見つけました。以下は、問題を修正するコードです。

//Find the two types of bodies in question
if (AABB.testOverlap(ballA.getBody().m_fixtureList.m_aabb, ballB.getBody().m_fixtureList.m_aabb))
{
    //Add new contact to collisionListener
}
于 2012-04-12T17:57:40.373 に答える
0

したがって、これを行うには2つの方法があると思います(ただし、テストしませんでした):

まずはセンサー付き。「凍結した」静的ボディにセンサーを追加すると、ボディ自体が静的であっても、センサーは他の静的オブジェクトとの衝突を検出する必要があります。

2 番目の可能性は、「凍結した」ボディを静的な形状ではなく、運動学的な形状にすることです。それらは依然として衝突を検出する必要があり、他の物理オブジェクトから反応することなく、ユーザーが設定した速度を持つことができるという利点があります。ただし、運動学的形状が静的な物体との接触点を生成するかどうかは完全にはわかりません。

于 2012-02-20T03:57:17.577 に答える
-1

IIUC では、爆発するボールはより大きな半径 (爆発の影響を受ける領域に相当) を持っていると考えることができます。その場合、影響を受ける周囲のボールは、その大きな円形領域と交差するボールになります。

于 2012-02-17T02:12:31.993 に答える