box2d,动态的身体,不能互相推动

时间:2014-01-05 11:06:42

标签: box2d

我正在创建一个自上而下的2d基于磁贴的游戏,并且设置box2d以特定方式工作时遇到一些麻烦。

基本上,我需要的是让所有box2d主体遵循某些规则: 1)它们不重叠 2)他们不互相推 3)他们仍然碰撞并提供碰撞联系清单

我将重力设置为0,并且仅使用setLinearVelocity移动我的身体,因为我需要它们以恒定速度移动,并且没有任何惯性效果。

看起来我需要一个静态的身体但可以手动移动。

我认为我可以使用运动体,但结果发现它们彼此重叠并且没有联系人列表。

有没有办法制作一个可以碰撞但不能相互推动的固体?

2 个答案:

答案 0 :(得分:0)

尝试将质量设置为无穷大 - 这样可以防止它们被其他对象移动,同时仍然可以手动设置其速度。如果这不起作用,请尝试将质量设置为0。

答案 1 :(得分:0)

一种方法是为每个动态身体创建一个运动体作为“阴影”体,具有完全相同的固定装置。经过一段时间后,设置运动体的位置,角度,线速度和角速度,使其与阴影动态体的位置,角度,线速度和角速度相匹配。

原始动态夹具应设置为不与其自身的阴影夹具碰撞,并且不要与具有阴影体的物体的原始夹具碰撞。

当这样的两组物体发生碰撞时,它们的阴影体会阻止相反的动物体推动它们,但它们仍然可以与世界上其他固定物正常碰撞。

请记住,Box2D很难复制我们在现实世界中看到的物理,你在这里要求的东西根本不现实。您可能会看到一些非常奇怪的行为,特别是如果您尝试将这些物体堆叠在一起,即使它们遵循您的规则。但是,对于自上而下不需要堆积物体的情况,可能没问题。