【发布时间】:2013-04-03 14:30:27
【问题描述】:
我们正在为一个学校项目创建一个游戏。这是一个 2D 平台游戏,它还处于早期阶段。我们使用 C#/XNA 并且正在实施 Farseer 物理引擎。 我目前正在与地图类作斗争。在类中,我们有一个 DrawableGameObjects 列表,我们存储地图的每个图块并绘制它们。但是当我们尝试绘制它们时,我们会得到“断言失败”。进一步研究这个问题,我得出的结论是,每当我们尝试向世界添加比静态物体更多的东西时(即使没有绘制它们),我们都会失败。 Throw message
Game1.cs:第 210 行是:
world.Step(0.033333f);
Program.cs:line 15 是:
game.Run();
这是 Map 类的代码:
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的源代码并找到该行。也许这会对你有所帮助。
-
要回应 Felix 的声明,请注意断言对话框的标题栏。 “重试”按钮映射到“调试”,它将跳转到导致断言的确切行。
-
我试过了,但引擎没有任何线路。经过几次“重试”后,我终于得到了这个message
-
这或多或少是相同的信息 - 只是进入游戏绘制/更新循环的不同入口点。
-
请注意,您的解决方案中应该有 Farseer
.csproj(项目)文件,并在您的游戏中添加为 项目参考(不是 DLL 参考)。然后当您点击“重试”时,调试器将转到 Farseer 中的代码行。