在零重力下停止身体运动

时间:2012-08-01 07:25:31

标签: cocos2d-iphone box2d-iphone gravity

我有一个关于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天我被卡住了。 请帮帮我。

提前致谢

2 个答案:

答案 0 :(得分:5)

你想让b2Body立即停止或减速(并最终停止)吗?

立即停止:

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

让它变慢:

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

答案 1 :(得分:0)

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

在释放操纵杆时,您应该重置box2d机身的速度。