0

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

提前致谢

4

2 回答 2

5

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

让它立即停止:

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

让它慢下来:

ballBody->SetLinearDamping(10.0); // experiment with the damping factor value until you get the right deceleration
于 2012-08-01T14:26:47.110 回答
0

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

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

于 2012-08-01T10:44:13.047 回答