获取碰撞的总Impulse值--chipmunk spacemanager cocos2d

时间:2011-05-25 09:58:20

标签: chipmunk

我正在使用太空管理员,我想计算物体碰撞的力,这样我就可以调整声音,并根据损坏情况来调整spirtes。有人可以告诉我如何计算力量。这是我在这个网站上得到的代码。

if(!cpArbiterIsFirstContact(arb)) return;

cpFloat impulse = cpvlength(cpArbiterTotalImpulse(arb));

浮动体积= MIN(脉冲/ 500.0f,1.0f); NSLog(@“冲动是:%f”,音量);

NSLog(@“impluse x:%f y:%f”,cpArbiterTotalImpulse(arb).x,cpArbiterTotalImpulse(arb).y);   if(volume> 0.05f){       [SimpleSound playSoundWithVolume:volume];   }

我在我的POSTSOLVE方法中有这个。我在BEGIN中尝试了它并且所有打印都是0.我通过这个网站发现我需要这样做。 smgr.space-> elasticIterations = smgr.space-> iterations;

即使在完成上述操作后,有时我会得到1,有时会说“nan”。我需要知道一些基本知识吗?

由于

1 个答案:

答案 0 :(得分:0)

来自cpArbiterTotalImpulse()的文档:

  

返回已应用的冲动   这一步解决了碰撞。   只应调用这些函数   从postSolve()回调,否则   结果未定义。

     

注意:如果你   正在使用已弃用的弹性   迭代设置你的空间,它   会导致你不正确   结果。弹性迭代不应该   需要更长时间,你应该   能够安全地关闭它们。