Box2d - 有没有办法检查特定位置是否有尸体?

时间:2013-08-24 12:09:35

标签: android box2d

在我的游戏中,在用户执行某些操作后,会在屏幕上随机重新定位正文。但是,如果物体重新定位在另一个物体的顶部,则两者都会被轻微推动(以腾出空间!)。我想首先检查随机生成坐标的位置,这样只有在位置空闲时才会进行重定位(无论如何都在一定的直径范围内)。

像... location.hasBody()。肯定必须有一个我没有找到的功能。谢谢!

3 个答案:

答案 0 :(得分: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 forum

答案 1 :(得分:0)

不确定box2d是否包含“干净”的方法。我只是在添加新的身体之前手动迭代世界上的所有身体,manually检查他们的位置+无线电/大小是否与新的身体形状重叠。

答案 2 :(得分:-1)

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

CGPoint pos = ccp(body->GetPosition().x * PTM_RATIO, body->GetPosition().y * PTM_RATIO); // in pixels