1

根据加载的 Texture2D,我想使用 Farseer 创建碰撞顶点以附加到 XNA 中的主体。

一个警告,首先。是我没有将 Farseer 用于碰撞以外的任何事情。渲染和所有其他游戏代码都是使用我自己的引擎完成的。Farseer 只是用作背景物理模拟器(并且只会在发生碰撞时告诉我,然后我会自己处理)。

我应该在这里指出,我对 Farseer 是 100% 的新手。以前从未使用过它。

因此,如果我使用 BayazitDecomposer.ConvexPartition(verts) 创建我的列表,那么我应该将这些数据与 Texture2D 对象一起存储吗?然后在创建可碰撞演员时即时创建 List 对象?还是我做错了什么?

此外,在http://farseerphysics.codeplex.com/documentation的示例中,它通过 Vertices.Scale() 缩放顶点...如果我将所有 Farseer 主体保留在像素空间中,我需要这样做吗?

谢谢你。

4

1 回答 1

1

因此,如果我使用 BayazitDecomposer.ConvexPartition(verts) 创建我的列表,那么我应该将这些数据与 Texture2D 对象一起存储吗?然后在创建可碰撞演员时即时创建 List 对象?还是我做错了什么?

您可以使用 BodyFactory 从顶点列表中创建 Body 类的实例。我建议为您拥有的每个演员都这样做。但是,您可以通过重用主体来节省一些处理器能力。因此,如果演员死亡,则将身体添加到队列中,然后将其捕捉到创建的新演员。

此外,在http://farseerphysics.codeplex.com/documentation的示例中,它通过 Vertices.Scale() 缩放顶点...如果我将所有 Farseer 主体保留在像素空间中,我需要这样做吗?

没有。然而,这意味着就 Farseer 而言,一个像素是一米。我相信如果半径 * 力的扭矩公式,所以任何依赖于半径的东西都不会像预期的那样表现。我建议让米相当于游戏中实际的米。它只是一个额外的划分。

于 2011-12-19T22:34:38.033 回答