1

基本上我试图以特定角度对圆形物体施加脉冲。但是身体的移动方向很不稳定。谁能帮帮我吗。

b2Vec2 v1 = bombbody->GetPosition();
b2Vec2 v2 = arrowPoint;//Value got from touch
b2Vec2 final = v2-v1;
float angle1 = CC_RADIANS_TO_DEGREES(atan2(final.y,final.x));
float factor = sqrt(final.x/PTM_RATIO * final.x/PTM_RATIO + final.y/PTM_RATIO * final.y/PTM_RATIO);
b2Vec2 ImpulseVector = b2Vec2(cos(angle1)*factor,sin(angle1)*factor);
b2Vec2 PointVector = bombbody->GetPosition();
bombbody->ApplyLinearImpulse(ImpulseVector,PointVector); 
4

1 回答 1

0

您应该使用b2Body::GetWorldCenter的第二个参数b2Body::ApplyLinearImpulse

  b2Vec2 PointVector = bombbody->GetWorldCenter();
  bombbody->ApplyLinearImpulse(ImpulseVector,PointVector); 

根据Box2D 论坛上的一篇帖子,力不作用的原因GetPosition是力作用于身体的质心,它可能并不总是与它的位置相同。

于 2011-08-02T00:46:46.307 回答