我有一个关于b2Fixture的问题。我有一个具有多个灯具(多边形)的实体。例如,在我的图片中,你可以看到一个带有多个夹具的车身。正文中间的线条应该表示一个点。我的问题是,我如何找出哪些灯具在哪个站点上,包括连接的灯具。

我的第一个想法是遍历每个灯具的所有顶点,并找出当前顶点从直线(向左还是向右?)的位置。
但这不起作用,因为右侧的灯具可以与其他灯具连接,这些灯具重叠在这条线上,如图中所示。

那么,有没有办法找出哪些灯具与其他灯具相连呢?或者我可以从左到右订购这些灯具吗?
希望大家能理解我。并对不好的图像表示歉意(:
提前谢谢你。
问候alex
发布于 2013-10-05 23:18:04
我的建议是在施工期间跟踪固定装置。您必须在某个时刻创建这些fixture,对吧?因为您没有标记任何特定版本的box2d,所以我假定您使用的是c++版本。
box2d允许您对夹具执行SetUserData操作。如果您还没有使用userData,那么您可以使用它来引用一个存储了fixture的邻居的对象。一个简单的结构可能如下所示:
struct FixtureNeighbors
{
b2Fixture* leftNeighbor;
b2Fixture* rightNeighbor;
};在构造void*的过程中,您应该创建一个FixtureNeighbors对象,将其强制转换为一个fixture,然后调用b2Fixture::SetUserData。然后,在游戏期间,只要调用b2Fixture::GetUserData就可以找出fixture的邻居是谁,将结果转换回fixtureNeighbors对象,并使用该对象访问左邻居和右邻居。
笔记
如果您已经在使用fixture userData指向一个实体或其他东西,那么您应该在FixtureNeighbors结构中添加一个GetEntity方法,并且如果您拥有该fixture,您仍然可以访问该实体。
如果一个装置可以接触两个以上的邻居,只需使用stl vector来存储它们的列表。
我希望这能帮到你!
https://stackoverflow.com/questions/19176890
复制相似问题