0

我正在使用 spacemanager,我想计算物体碰撞的力,以便我可以根据损坏调整声音和适当的精灵。有人可以告诉我如何计算力。这是我在这个网站上得到的代码。

if(!cpArbiterIsFirstContact(arb)) return;

cpFloat 脉冲 = cpvlength(cpArbiterTotalImpulse(arb));

浮动量 = MIN(脉冲/500.0f, 1.0f); NSLog(@"脉冲为 :%f",volume);

NSLog(@" 内含 x:%fy:%f", cpArbiterTotalImpulse(arb).x , cpArbiterTotalImpulse(arb).y); if(volume > 0.05f){ [SimpleSound playSoundWithVolume:volume]; }

我在我的 POSTSOLVE 方法中有这个。我也在 BEGIN 中尝试过,它打印的都是 0。我浏览了这个站点,发现我需要这样做。smgr.space->elasticIterations = smgr.space->迭代;

即使在完成上述操作后,有时我会得到 1,有时会显示“nan”。有什么基本的我需要知道的吗?

谢谢

4

1 回答 1

0

从 cpArbiterTotalImpulse() 的文档中:

返回应用于此步骤以解决冲突的脉冲。这些函数只能从 postSolve() 回调中调用,否则结果未定义。

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

于 2011-05-27T14:02:17.163 回答