如何计算Box2D的承重?

时间:2009-05-06 04:04:13

标签: flash actionscript-3 box2d

我正在使用Box2D(AS3 / Flash版本,如果它很重要),我正在尝试计算每个身体携带多少重量。

我知道如何遍历所有物体,并且我知道如何轮询“碰撞检测”例程,但是一旦施加了重量,似乎碰撞力就会消失。我忽略了某种“全静力”属性吗?

3 个答案:

答案 0 :(得分:2)

在可选的contactListener对象中使用contactResult类型,您可以轮询每个项目的normalForce,以找出正在对对象应用的力(本质上包括权重)。

请注意,睡眠的身体(例如休息堆叠)不会触发contactResults,但是如果您关闭睡眠或者只想在动作发生时测量力量,它应该可以正常工作。

有关如何实现contactListener类的信息,请查看文档。

答案 1 :(得分:0)

我玩Box2D已经有一段时间了,你是否尝试过对感兴趣的事情进行轮询GetReactionForce()

我知道当我进行桥梁模拟并且我希望桥梁基于它的重量而断开时,我对GetReactionForce()进行了轮询,如果它超过某个阈值,那么我删除了连接两个物体的关节

答案 2 :(得分:-1)

我认为您需要做的就是循环浏览b2Body实例并使用GetMass()方法。

我不确定你的“总静力”是什么意思。

至于重量/质量,我认为你在任何碰撞之前应用它,当你创造身体时, 或者使用setMass()自行设置;或者让box2d使用SetMassFromShapes()方法估算基于形状的质量。

HTH