box2d + cocos2d:使用mouseJoint操作框2d中的对象时为什么会出现延迟

时间:2011-02-16 06:58:24

标签: cocos2d-iphone box2d

当我在游戏中拖动一个物体时,物体永远不会直接在手指下面。在那里,我无法摆脱这种滞后/延迟。它跟随我的手指而不是直接在它下面。您也可以在Testbed中试用。尝试快速移动对象并且对象永远不会在鼠标/手指下方

这是box2d的弱点吗?或者我错过了一些明显的东西?

提前致谢

2 个答案:

答案 0 :(得分:0)

其中大部分与硬件延迟有关。如果你的时间是完全完美的,它们将是由iPhone的GPU引起的16ms滞后,距触摸屏约20ms的延迟,以及你的场景处理所需的时间。所以这些加起来在36-70ms的滞后之间。此外,在鼠标关节的box2d中应用了少量阻尼,以保证物理模拟的稳定性。

答案 1 :(得分:0)

那是因为mouseJoint类似于distantJoint(春天)。您可以指定maxForce参数以最大限度地减少延迟 - 使弹簧更加坚硬。

修改

此外,您可以直接移动对象,将其位置指定到手指位置。但是如果这个物体碰撞某物会产生非物理行为,因为物体的速度将为零。

因此要正确移动它(如果会有碰撞),你应该指定它的速度或加速度(如鼠标关节那样)。但要评估你的手指速度,你需要一些时间和延迟。