使用Farseer拼贴物理


9

我在Farseer物理引擎中遇到问题,在平铺环境中,即使对象完美对齐,我的对象有时也会与其他对象的角相互作用。

使用Farseer拼贴物理

我读过一些关于有人建议您使用Marching Squares或类似方法来计算和创建一个较大的对象的信息。但是,这不是一种选择,因为我希望每个瓷砖都具有不同的物理特性,例如不同的摩擦力和恢复力。

我的问题是,到底是什么原因造成的,它是浮点精度问题还是其他原因?有没有一种方法可以在不破坏整个物理引擎的情况下进行修复?


我想知道您是否可以将碰撞盒简单地扩大一个像素,以便它们重叠一点。它可能会发现表面连接更多。
Doug.McFarlane 2011年

@Doug:我只是测试了一下,没有任何区别。
William Mariager

地砖是静电体吗?
bummzack 2011年

@bummzack:是的。
威廉

我有完全相同的问题。当我的可移动对象是矩形或圆形时,会出现“弹跳”效果。我也不能将多个正方形转换成一个大矩形,因为我希望玩家能够在某些情况下“删除”单个图块。

Answers:


5

Farseer使用迭代求解器,因此当您的车轮开始以高速度与另一个矩形碰撞时,您会不时看到颠簸,因为这是对我们(而不是物理模拟)的“完美对齐”,而迭代会像这样永远都不是“完美的像素”。

您将必须将矩形转换为“边/环”形状,然后使用技巧对不同的物理质量进行建模,例如创建人造瓷砖边界,然后在角色进入边界框时更改属性,但是并非每种物理质量都可以通过这种方式进行仿真。

迟早您将最终编写自己的基于图块的物理而不是Farseer。如果您的游戏没有很多复杂的物理难题,则完全放弃Farseer并滚动自己的基于图块的物理会更简单。


实际上,我已经开始编写自己的物理引擎,特别是为此平铺引擎编写代码,因为似乎没有任何优雅的解决方案。
William Mariager

我决定将此答案标记为答案,因为似乎没有任何简单的解决方案,因此最好编写自己的解决方案。或者接受您不能拥有不同的物理学,并使用行进正方形来制作更大的物体。
William Mariager

0

您可以优化碰撞形状,该场景只能用四个矩形完成。

您可以加入相关框使之更大。

该视频显示了它http://www.youtube.com/watch?v=eyhGckHgkkE

添加框时,您会看到具有优化形状的浅蓝色矩形。


1
正如我在第三段中所说的那样,将一组对象变成一个更大的对象不是一种选择,因为我会丢失一些单独的属性。
William Mariager

您也可以根据它们的物理属性对其进行分组。我认为将许多不同的物理块放在一起并不是很平常。
布劳

如果地形在一瞬间变化很大,将它们按身体素质分组会给我同样的问题。这可能很不寻常,但是尽管如此,我仍然需要它。
William Mariager

0

嗯...我怀疑这可能与您的圈子有关,而不是与其下方的瓷砖有关。尝试使用单个船体做地面,看看是否获得相同的结果。如果不是,那就像您怀疑的那样。如果是这样,您的圈子就不会像您想象的那样圆。


我做了测试。使用一个大矩形没有问题。
William Mariager

k,那么瓷砖就是问题所在
约翰·麦克唐纳,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.