Andengine Box2D物理体在增加重量时不旋转

时间:2012-05-04 11:27:05

标签: android box2d andengine game-physics

Andengine Box2D物理体在增加重量时不旋转,否则它完全旋转。我正在制作一个玩家可以投掷炸弹的游戏,当玩家用炸弹投掷炸弹时自然重量旋转完美但是当我增加炸弹的重量没有旋转炸弹。我坚持这里..plz的帮助。 谢谢。

if (bomb)           
{
    mScene.detachChild(target);
    target = null;      
    bombFire = new Sprite(mBall2.getX()+mBall2.getWidth()/2,mBall2.getY(),bombFireRegion);
    mScene.attachChild(bombFire);
    bombBody = PhysicsFactory.createCircleBody(mPhysicsWorld, bombFire,BodyType.DynamicBody, bombFixDef);
    bombBody.setMassData(bombMass);
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(bombFire, bombBody, true, true));               
    Vector2 v = new Vector2((xpt-mBall2.getX()),(ypt-mBall2.getY()));
    bombBody.applyLinearImpulse(v,bombBody.getWorldCenter());
}

1 个答案:

答案 0 :(得分:5)

最好通过缩放该主体的现有massData来更改现有主体的质量。这样可以将质心保持在正确的位置,并确保质量和转动惯量正确匹配。

b2MassData massData;
body->GetMassData(&massData);

float scaleFactor = desiredMass / massData.mass;
massData.mass *= scaleFactor;
massData.I *= scaleFactor;

body->SetMassData(&massData);

要注意的一点是,这不会影响身体上的固定装置的密度。如果在此之后添加或移除身体中的任何灯具,将从灯具重新计算质量数据,而不是从您的质量数据中重新计算。因此,在更换灯具后,您必须再次执行此操作以恢复所需的质量。