在没有力量的情况下移动Box2d的玩家

如何在不施加力的情况下使用键盘移动播放器? 如果我select了playerBody.setLinearVelocity(new B2Vec2(0, 2))它会移动球员,但是当我释放移动的球时,球会持续移动几秒钟。

应用武力仍然是这样做的。 但是,您可以直接应用所需速度的冲动。 您仍然可以让玩家立即停止(而不是减速)您只需要将所需的速度设置为零。 以下是摘录:

 b2Vec2 vel = body->GetLinearVelocity(); float desiredVel = 0; switch ( moveState ) { case MS_LEFT: desiredVel = -5; break; case MS_STOP: desiredVel = 0; break; case MS_RIGHT: desiredVel = 5; break; } float velChange = desiredVel - vel.x; float impulse = body->GetMass() * velChange; //disregard time factor body->ApplyLinearImpulse( b2Vec2(impulse,0), body->GetWorldCenter() ); 

如果要逐渐加速,请通过以下方式更改开关块:

  case MS_LEFT: desiredVel = b2Max( vel.x - 0.1f, -5.0f ); break; case MS_STOP: desiredVel = 0; break; case MS_RIGHT: desiredVel = b2Min( vel.x + 0.1f, 5.0f ); break; 

你应该没问题

来源: http : //www.iforce2d.net/b2dtut/constant-speed

根据你想要做什么,你可以使用

 playerBody.setPosition(new b2Vec(x,y)) 

所以当你把你的钥匙按下时,你可以继续增加1的位置。

或者当按键closures时,可以应用线速度,当按键达到时,可以将线速度设置为0。

速度总是在移动身体,直到世界上的力量将速度降低到0;