【问题标题】:Dragging a Sprite (Cocos2D) while Chipmunk is simulating在 Chipmunk 模拟时拖动 Sprite (Cocos2D)
【发布时间】:2010-05-01 13:10:17
【问题描述】:

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

我实现了 ccTouchesBegan/Moved/Ended 方法来拖动球。 我都试过了:

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

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

虽然球确实跟随我的拖动,但它仍然受到重力的影响,它试图向下移动(这会导致速度问题和其他问题)。

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

谢谢!

【问题讨论】:

    标签: iphone cocos2d-iphone chipmunk


    【解决方案1】:

    暂时将身体移出空间。

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

    【讨论】:

    • 我现在可以拖动它,但是如果我把它扔到一边然后松开它,它就会停下来并直线下降并弹起......知道我该怎么做让它在我释放它时以正确的方向/速度移动?谢谢。
    【解决方案2】:

    当您不使用 cpBodySlew() 时,您不会更新对象的速度。这就是它直接掉下来的原因。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2013-11-18
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多