0

更新ループで衝突をチェックする方法は知っていますが、box2D で 2 つのボディが接触またはオーバーラップしているかどうかを確認する必要がある立場にあります。これらのオブジェクトへのポインターがあり、更新中に確認したくありません。

私はまだ Box2D を学んでいるので、これがばかげた質問である場合は申し訳ありません。これを1時間ほど解決しようとしましたが、運がありません。

b2TestOverlapまたは多分を使用してこれを行うことができるようですb2CollideCircles(オブジェクトはb2CircleShapesであるため)。これらのいずれかが正しい戦略である場合、特定のボディから形状を取得できますか?また、変換値として何を使用すればよいですか? これらがうまくいかない場合、指定された 2 つの b2Body オブジェクトがオーバーラップまたはタッチしているかどうかを確認するにはどうすればよいですか

更新: LearnCocos2D のおかげで取得したコードは次のとおりです。

    -(BOOL)isTouchingCentre:(b2Body*)bodyToTest{
    //body is a b2Body object
        bool overlap = b2TestOverlap(body->GetFixtureList()->GetShape(), bodyToTest->GetFixtureList()->GetShape(), body->GetTransform(), bodyToTest->GetTransform());
        return overlap;

    }
4

1 に答える 1

1

b2TestOverlap の詳細についてはわかりませんが、試してみます。形状が 1 つだけであると仮定すると、ボディから必要な情報を取得できます。

body->GetTransform();
body->GetFixtureList()->GetShape();
于 2012-05-24T20:40:41.207 に答える