我对b2Fixture有疑问。我有一个有多个灯具(多边形)的车身。在我的图片中,你可以看到一个有多个灯具的车身。身体中间的线应代表一个点。我的问题是如何确定哪个灯具在哪个站点上,包括连接的灯具。
我的第一个经历是遍历每个灯具的所有顶点并找出当前顶点从线(左或右?)的位置。
但是这不起作用,因为右侧的灯具可以与其他灯具连接,这些灯具在图像中就像这里一样重叠。
那么有没有办法找出哪个灯具与其他灯具连接?或者我可以从左到右订购灯具吗?
希望有人理解我。对不好的图像感到抱歉(:
提前谢谢。
问候亚历克斯
答案 0 :(得分:1)
我的建议是在施工期间跟踪灯具。你必须在某个时刻创造这些装置,对吧?因为你没有标记任何特定版本的box2d,所以我假设你使用的是c ++版本。
box2d允许您SetUserData
获取灯具。如果您尚未使用userData
,那么您可以使用它来引用存储灯具邻居的对象。一个简单的结构可能如下所示:
struct FixtureNeighbors
{
b2Fixture* leftNeighbor;
b2Fixture* rightNeighbor;
};
在构建灯具时,您应该创建一个FixtureNeighbors
对象,将其转换为void*
,然后调用b2Fixture::SetUserData
。然后,在游戏过程中,每当你想知道夹具的邻居只是调用b2Fixture::GetUserData
时,将结果转换回fixtureNeighbors
对象,并使用它来访问左右邻居。 / p>
备注强>
如果您已使用灯具userData
指向实体或其他内容,则应在GetEntity
结构中添加FixtureNeighbors
方法,如果仍然可以访问实体你有固定装置。
如果一个灯具可以触摸两个以上的邻居,只需使用stl vector
来存储它们的列表。
我希望这有帮助!