在我的游戏中,在用户执行某些操作后,会在屏幕上随机重新定位正文。但是,如果物体重新定位在另一个物体的顶部,则两者都会被轻微推动(以腾出空间!)。我想首先检查随机生成坐标的位置,这样只有在位置空闲时才会进行重定位(无论如何都在一定的直径范围内)。
像... location.hasBody()。肯定必须有一个我没有找到的功能。谢谢!
答案 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