2

所以我正在开发一款名为 Star Commander 的太空游戏。

进展非常顺利,直到我决定我需要实现某种物理。我主要需要 Farseer Physics 进行碰撞检测。

无论如何,因为这是一个太空游戏,所以当我声明我的“世界”对象时:

private World world;
this.world = new World(Vector2.Zero);

我没有重力。这会导致奇怪的结果。我可以与物体发生碰撞,但一旦我停止与它们碰撞,就是这样。我不能再与他们发生碰撞,我会直接穿过他们。然而,在重力作用下:

private World world;
this.world = new World(new Vector2(0F, 1F));

碰撞效果很好。

我试过四处寻找有关 Farseer 的帮助,但很多帖子都过时了,而且没有真正好的信息来源,可悲的是,我很确定我也不会在这里得到我需要的帮助。

我环顾四周时发现的唯一一件事是,对于名为“Geoms”的对象,我需要禁用一个名为“CollisionResponeEnabled”或类似的属性。

然而 Geom 对象在 Farseer Physics 3 中不再存在,并且完全被 Fixtures 取代。然而,灯具似乎没有这个属性。

我可以提供任何可能有帮助的源代码,但请记住,我仍在将物理引擎实现到我的项目中,并且很多代码都不是最终的并且有点混乱。

重要编辑:

在录制了一个简短的 gif 来演示我的问题后,我发现我只能与一个对象碰撞一次,要再次与它碰撞,我必须与另一个对象碰撞,但直到我与一个对象碰撞后才能与该对象发生碰撞不同的对象。

例子:

4

1 回答 1

2

在我看来,碰撞后你的身体可能正在“睡觉”。您是否尝试过设置SleepingAllowed = false尸体以查看是否有问题?

于 2013-10-29T15:04:33.347 回答