2014-06-19 63 views
0

当我尝试将灯具附加到主体时,我总是在此行中收到此错误消息。无法将类型'System.Collections.Generic.List'隐式转换为'FarseerPhysics.Dynamics.Fixture'

Fixture Newfixture = FixtureFactory.AttachCompoundPolygon(list, 1.0f, TestBody); 

无法隐式转换类型“System.Collections.Generic.List”到“FarseerPhysics.Dynamics.Fixture”

如何创建一个夹具和其附加到身体?是否有可能将多个固定装置连接到身体上?

我的代码的其余部分:

List<Vertices> list = new List<Vertices>(); 
Vector2 _origin; 
float _scale; 

uint[] data = new uint[Sprite.Width * Sprite.Height]; 
Sprite.GetData(data); 
Vertices textureVertices = PolygonTools.CreatePolygon(data, Sprite.Width, false); 
Vector2 centroid = -textureVertices.GetCentroid(); 
textureVertices.Translate(ref centroid); 
_origin = -centroid; 
textureVertices = SimplifyTools.ReduceByDistance(textureVertices, 4f); 
list = Triangulate.ConvexPartition(textureVertices, TriangulationAlgorithm.Bayazit); 
_scale = 1f; 
Vector2 vertScale = new Vector2(ConvertUnits.ToSimUnits(1)) * _scale; 
foreach (Vertices vertices in list) 
{ 
    vertices.Scale(ref vertScale); 
} 
+0

'FixtureFactory.AttachCompoundPolygon'返回一个列表不是一个单一的项目。 – Habib

回答

0
Fixture Newfixture = FixtureFactory.AttachCompoundPolygon(list, 1.0f, TestBody); 

这行代码返回List<Fixture> 下面是从FixtureFactory源代码的方法签名。

public static List<Fixture> AttachCompoundPolygon(List<Vertices> list, float density, Body body) 

所以你得到一个List<Fixture>回来。如果你想在该列表中的第一项(这可能是这样,因为你假设有希望只有一个),然后

Fixture Newfixture = FixtureFactory.AttachCompoundPolygon(list, 1.0f, TestBody).First(); 
+0

我想将3个灯具附加到TestBody上。我怎样才能做到这一点? – Leo

+0

我不确定你的意思。当您使用您的顶点列表调用AttachCompoundPolygon时,您会得到多个附加到TestBody的Fixture。 –

相关问题