我们正在为一个学校项目创建一个游戏。这是一款2D平台游戏,并且处于非常早期的阶段。我们使用C#/ XNA,我们正在实现Farseer物理引擎。 我目前正在努力与地图级。在课堂上,我们有一个DrawableGameObjects列表,我们存储地图的每个图块并绘制它们。但是当我们试图绘制它们时,我们会得到一个“断言失败”。进一步研究这个问题,我得出结论:只要我们试图向世界添加更多的静态物体(即使没有绘制它们),我们也会失败。 Throw messageFarseer Assertion Failure
Game1.cs:行210:
world.Step(0.033333f);
而且Program.cs的:第15行是:
game.Run();
下面是地图类的代码:
class Map
{
private List<DrawableGameObject> ground = new List<DrawableGameObject>();
public Map(World world, Texture2D texture)
{
for (int i = 0; i < 32; i++)
{
DrawableGameObject floor = new DrawableGameObject(world, texture, new Vector2(40, 40), 100, "ground");
floor.Position = new Vector2(i * 40, 500);
floor.body.BodyType = BodyType.Static;
ground.Add(floor);
}
}
public void Draw(SpriteBatch spriteBatch){
foreach (DrawableGameObject dgo in ground)
dgo.Draw(spriteBatch);
}
}
任何想法?我已将问题发布在Farseer's forum上,但它们还没有得到很大帮助......
您可以查看farseer的源代码并找到该行。也许这会帮助你。 – 2013-04-11 11:56:18
要回显Felix的说法,请注意断言对话框的标题栏。 “重试”按钮映射到“调试”,它将跳转到导致断言的精确线路。 – 2013-04-11 12:03:17
我试过了,但我没有收到引擎的任何代码。经过几次“重试”之后,我终于得到了这个[消息](http://imgur.com/BiCJDcZ) – elsgard 2013-04-11 12:21:07