XNA - Farseer Physics 3.5 - 碰撞检测问题 - 无/零重力 - 空间游戏

时间:2013-10-29 14:41:02

标签: c# xna physics physics-engine farseer

所以我正在开发一款名为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”的属性或类似的东西。

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

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

重要编辑:

在记录了一个简短的GIF来演示我的问题后,我发现我只能碰到一个物体,再次与它碰撞,我必须与另一个物体碰撞,但是在我不能碰撞那个物体之前与另一个物体碰撞。

示例:

1 个答案:

答案 0 :(得分:2)

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