所以我正在开发一款名为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来演示我的问题后,我发现我只能碰到一个物体,再次与它碰撞,我必须与另一个物体碰撞,但是在我不能碰撞那个物体之前与另一个物体碰撞。
示例:
答案 0 :(得分:2)
在我看来,你的身体可能会在碰撞后“睡觉”。您是否尝试在尸体上设置SleepingAllowed = false
以查看是否存在问题?