【问题标题】:Stop movement of body in zero gravity在零重力下停止身体运动
【发布时间】:2012-08-01 07:25:31
【问题描述】:

我有一个关于 box2d 和 cocos2d 的问题。我的世界重力为零,我正在玩瓷砖基础游戏。我正在使用潜行操纵杆来移动精灵,它的移动很完美,但是当我将点释放到操纵杆时,我的精灵身体由于某种力量而无法停止。我想在释放操纵杆时停止精灵的移动。

-(void)update:(ccTime)dt :(b2Body *)ballBody :(CCSprite *)player
{
    CGPoint scaledVelocity=ccpMult(joysticks.velocity, 2);

    NSLog(@"Joystick Velocity X: %f",joysticks.velocity.x);
    NSLog(@"Joystick Velocity Y: %f",joysticks.velocity.y);

b2Vec2 force=b2Vec2(scaledVelocity.x/PTM_RATIO,scaledVelocity.y/PTM_RATIO);
       ballBody->ApplyLinearImpulse(force, ballBody->GetWorldCenter());    

}

这里 scaledVelocity 值近似为 0 到 1。当我释放操纵杆时,操纵杆的时间值为 0.0

请帮助我,自从过去 5 天以来,我一直被困住。 请帮帮我。

提前致谢

【问题讨论】:

    标签: cocos2d-iphone box2d-iphone gravity


    【解决方案1】:

    您希望 b2Body 立即停止还是减速(并最终停止)?

    让它立即停止:

    ballBody->SetLinearVelocity(b2Vec2(0,0));
    

    让它慢下来:

    ballBody->SetLinearDamping(10.0); // experiment with the damping factor value until you get the right deceleration
    

    【讨论】:

    【解决方案2】:

    你应该看看这个问题的答案: How to stop the forces acting on a body in box2d

    释放操纵杆时,您应该重置 box2d 主体的速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2012-01-19
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      相关资源
      最近更新 更多