基本上我试图将冲动应用于特定角度的圆形体。 但是身体朝着不稳定的方向移动。 任何人都可以帮助我。
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);
答案 0 :(得分:0)
您应该使用b2Body::GetWorldCenter
作为b2Body::ApplyLinearImpulse
的第二个参数:
b2Vec2 PointVector = bombbody->GetWorldCenter();
bombbody->ApplyLinearImpulse(ImpulseVector,PointVector);
根据post at Box2D forum,GetPosition
不能用力的原因是力与身体的质心一起工作,这可能并不总是与它的位置相同。 / p>