C# 新华社-Farseer Physics 3.5-碰撞检测问题-无重力/零重力-太空游戏

C# 新华社-Farseer Physics 3.5-碰撞检测问题-无重力/零重力-太空游戏,c#,xna,physics,physics-engine,farseer,C#,Xna,Physics,Physics Engine,Farseer,所以我在做一个叫做星际指挥官的太空游戏 在我决定我需要实现某种物理之前,这个过程进展得非常顺利。我主要需要Farseer物理学来检测碰撞 无论如何,因为这是一个太空游戏,当我声明我的“世界”对象时: private World world; this.world = new World(Vector2.Zero); 我没有重力。这会导致一个奇怪的结果。我可以与物体碰撞,但一旦我停止与它们碰撞,就是这样。我再也不能与它们相撞了,只能直接穿过它们。然而,在重力作用下: private World

所以我在做一个叫做星际指挥官的太空游戏

在我决定我需要实现某种物理之前,这个过程进展得非常顺利。我主要需要Farseer物理学来检测碰撞

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

private World world;
this.world = new World(Vector2.Zero);
我没有重力。这会导致一个奇怪的结果。我可以与物体碰撞,但一旦我停止与它们碰撞,就是这样。我再也不能与它们相撞了,只能直接穿过它们。然而,在重力作用下:

private World world;
this.world = new World(new Vector2(0F, 1F));
碰撞工作得很漂亮

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

我在四处查看时发现的唯一一件事是,对于名为“Geom”的对象,我需要禁用名为“CollisionResponeEnabled”或类似属性

然而,Geom对象不再出现在Farseer Physics 3中,已完全被固定装置取代。但是,固定装置似乎没有此属性

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

重要编辑:

在录制了一个简短的gif来演示我的问题后,我发现我只能与一个对象碰撞一次,要再次碰撞,我必须与另一个对象碰撞,但在与另一个对象碰撞之前,我无法与该对象碰撞

例如:


在我看来,你的身体可能在碰撞后“睡着了”。你试过在身体上设置
SleepingAllowed=false
,看看这是否是问题所在吗?

在我看来,你的身体可能在碰撞后“睡着了”。您是否尝试过在身体上设置
SleepingAllowed=false
,看看这是否是问题所在?非常感谢。ananthonline我将我的玩家的身体设置为SleepAllowed=false,它工作得非常完美。我非常感谢你的帮助。我会补充这一点作为回答,请接受,这样以后来的人可以很容易地找到它。