在Chipmunk模拟时拖动Sprite(Cocos2D)

时间:2010-05-01 13:10:18

标签: iphone cocos2d-iphone chipmunk

我有一个用Cocos2D和Chipmunk构建的简单项目。到目前为止,它只是一个球(身体,形状和精灵)在地面上弹跳(屏幕底部的静态线段)。

我实施了ccTouchesBegan / Moved / Ended方法来拖动球。 我试过了两个:

cpBodySlew(ballBody, touchPoint, 1.0/60.0f);

ballBody->p = cgPointMake(touchPoint.x,touchPoint.y);

虽然Ball确实跟随我的拖动,但它仍然受到重力的影响而且它试图下降(导致速度问题和其他问题)。

有没有人知道在进行物理模拟时拖动活动身体的首选方法? 我是否需要以某种方式停止模拟并在之后将其重新打开?

谢谢!

2 个答案:

答案 0 :(得分:0)

暂时从空间中移除身体。

如果您希望对象在释放时具有惯性,那就是另一个故事。最干净的方法是在球和一个在手指控制下移动的临时传感器主体之间连接一个相当坚硬的弹簧。当你用手指松开时,球会在你拖动时保留它所具有的任何运动学。在这种情况下,请确保从空间中移除球。

答案 1 :(得分:0)

当您不使用cpBodySlew()时,您没有更新对象的速度。这就是为什么它会直接下降。

更好的方法是使用像官方演示那样的力夹式枢轴关节来实现鼠标控制。 http://code.google.com/p/chipmunk-physics/source/browse/trunk/Demo/ChipmunkDemo.c#296