我在Farseer文档中尝试了“Texture to polygon”示例。 https://farseerphysics.codeplex.com/documentation 但我总是在以下行中收到此错误消息:
//Find the vertices that makes up the outline of the shape in the texture
Vertices verts = PolygonTools.CreatePolygon(data, polygonTexture.Width, polygonTexture.Height, true);
No overload for method 'CreatePolygon' takes 4 arguments
Farseer文档中是否有错误或出了什么问题? 我应该在这一行改变什么?
另外,我在以下几行中收到这两条错误消息:
_list = BayazitDecomposer.ConvexPartition(verts);
List<Fixture> compund = FixtureFactory.CreateCompoundPolygon(World, _list, 1);
The name 'BayazitDecomposer' does not exist in the current context
'FarseerPhysics.Factories.FixtureFactory' does not contain a definition for 'CreateCompoundPolygon'
有什么问题?
我的代码中有以下三种用法:
using FarseerPhysics.Dynamics;
using FarseerPhysics.Factories;
using FarseerPhysics.Common;
我应该添加另一个吗?
答案 0 :(得分:3)
我认为所有问题都可以归结为不包括正确的库。我承认,你链接的FarseerPhysics文档不是很有帮助。您可以在自己的源代码中看到,BayazitDecomposer是FarseerPhysics.Common.Decomposition
命名空间的一部分,因此您可以通过说
using FarseerPhysics.Common.Decomposition;
位于顶部,或只是using FarseerPhysics.Common;
和代码:
Decomposition.BayazitDecomposer() //etc.
我建议您查看其他开发人员的示例代码,或者深入了解FarseerPhysics的来源,以了解您缺少的其他库。
我在CreatePolygon
案例中也注意到,根据我所查看的BodyFactory定义,该方法甚至没有返回您认为它的Vertices
类型。因此,在这种情况下,您不仅可能缺少所需的库,而且当您包含它时,它会说返回类型是错误的。
考虑到这些问题,也许提出您所使用的示例代码基于较旧版本的Farseer的评论者是正确的。
答案 1 :(得分:1)
下载文件Farseer Physics Engine 3.3.1 Samples XNA时!高级演示1有一个&#34;纹理到多边形&#34;
这个过时的页面文档。