我正在使用Box2D(AS3 / Flash版本,如果它很重要),我正在尝试计算每个身体携带多少重量。
我知道如何遍历所有物体,并且我知道如何轮询“碰撞检测”例程,但是一旦施加了重量,似乎碰撞力就会消失。我忽略了某种“全静力”属性吗?
答案 0 :(得分:2)
在可选的contactListener对象中使用contactResult类型,您可以轮询每个项目的normalForce,以找出正在对对象应用的力(本质上包括权重)。
请注意,睡眠的身体(例如休息堆叠)不会触发contactResults,但是如果您关闭睡眠或者只想在动作发生时测量力量,它应该可以正常工作。
有关如何实现contactListener类的信息,请查看文档。
答案 1 :(得分:0)
我玩Box2D已经有一段时间了,你是否尝试过对感兴趣的事情进行轮询GetReactionForce()?
我知道当我进行桥梁模拟并且我希望桥梁基于它的重量而断开时,我对GetReactionForce()进行了轮询,如果它超过某个阈值,那么我删除了连接两个物体的关节
答案 2 :(得分:-1)
我认为您需要做的就是循环浏览b2Body实例并使用GetMass()方法。
我不确定你的“总静力”是什么意思。
至于重量/质量,我认为你在任何碰撞之前应用它,当你创造身体时, 或者使用setMass()自行设置;或者让box2d使用SetMassFromShapes()方法估算基于形状的质量。
HTH