我正在使用Chipmunk cocos2d最终将会发生碰撞粒子产生噪音的声音生成游戏。但是现在,我遇到了一个问题:我的粒子一直在地板上掉落!
在示例“弹跳球”模板中,输入加速度计流的乘数相当低(大约100.0f),但为了让事情真正做出快速反应,我正在启动它:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)accel
{ space->gravity = cpvmult(cpv(accel.x, accel.y), 10000.0f); // originally 100.0f
}
我发现这可以通过使dt
非常小来改善,在1/240秒左右轮询加速度计。
这是最好的方法吗?是否还有另一种方式可以告诉花栗鼠“注意,这些事情会快速移动”?
答案 0 :(得分:3)
通常,许多物理引擎难以在相对于其速度较小的快速移动物体之间发生碰撞。我不知道花栗鼠的具体细节,但是你的问题意味着在某些时间间隔对相交的物体进行检查。如果对象快速移动且很小,则可能会跳过发生碰撞的时间间隔。
两个最简单的解决方案是使用较小的时间间隔,或以某种方式使两个对象中的一个更大。你是如何代表场地的?如果你可以将它表示为一个厚矩形,那么这也应该可以减少问题。
更难的解决方案是使用更复杂的交叉算法,例如使用bounding capsules来表示两个样本之间的球体所经过的空间区域。如果API不支持这一点,则需要大量的数学和修改。