0

私のゲームでは、ユーザーが何かをした後、画面上で体がランダムに再配置されます。ただし、オブジェクトが別のボディの上に再配置された場合、両方がわずかに押されます (スペースを空けるためです!)。最初にランダムに生成された座標の位置を確認したいので、位置が空いている場合にのみ再配置が行われます(とにかく特定の直径内)。

のようなもの.. location.hasBody(). これには、私が見つけていない機能がきっとあるはずです。ありがとう!

4

3 に答える 3

1

ポイントで世界をクエリしてボディを取得する方法はありませんが、小さなボックスで世界をクエリすることはできます。

// Make a small box.
b2AABB aabb;
b2Vec2 d;
d.Set(0.001f, 0.001f);
aabb.lowerBound = p - d;
aabb.upperBound = p + d;

// Query the world for overlapping shapes.
QueryCallback callback(p);
m_world->QueryAABB(&callback, aabb);

if (callback.m_fixture)
{
    //it had found a fixture at that position
}

ここに最初に投稿されたソリューション: Cocos2d-iphone フォーラム

于 2013-08-25T12:56:34.513 に答える
0

box2dそれを行うための「クリーンな」方法が含まれているかどうかはわかりません。新しいボディを追加する直前に、世界中のすべてのボディを手動で繰り返し、manuallyそれらの位置 + ラジオ/サイズが新しいボディ形状と重なるかどうかを確認します。

于 2013-08-24T13:06:08.150 に答える
-1

試す

b2Vec2 vec = body->GetPosition(); // in meters

また

CGPoint pos = ccp(body->GetPosition().x * PTM_RATIO, body->GetPosition().y * PTM_RATIO); // in pixels
于 2013-08-25T14:14:54.647 に答える