Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 增加重量时,机体不旋转_Android_Box2d_Andengine_Game Physics - Fatal编程技术网

Android 增加重量时,机体不旋转

Android 增加重量时,机体不旋转,android,box2d,andengine,game-physics,Android,Box2d,Andengine,Game Physics,Andengine Box2D物理体在增加重量时不会旋转,否则会完美旋转。我正在制作一个游戏,玩家可以投掷炸弹,当玩家投掷炸弹时,炸弹的自然重量会完美旋转,但当我增加炸弹的重量时,炸弹不会旋转。我被困在这里。请帮助。 多谢各位 if (bomb) { mScene.detachChild(target); target = null; bombFire = new Sprite(mBall2.getX()+mBall2.getWidth(

Andengine Box2D物理体在增加重量时不会旋转,否则会完美旋转。我正在制作一个游戏,玩家可以投掷炸弹,当玩家投掷炸弹时,炸弹的自然重量会完美旋转,但当我增加炸弹的重量时,炸弹不会旋转。我被困在这里。请帮助。 多谢各位

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());
}

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

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

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

body->SetMassData(&massData);

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

更改现有实体的质量最好通过缩放该实体的现有质量数据来完成。这将使质心保持在正确的位置,并确保质量和转动惯量正确匹配

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

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

body->SetMassData(&massData);

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

感谢您的关注。以上是代码。谢谢。变量“bombMass”中有哪些值?可能您正在将转动惯量设置为零。MassData bombMass=新MassData();质量,质量=10f;非常感谢如果我把转动惯量设为1,它就可以工作了(炸弹旋转得很好):)谢谢你的兴趣。以上是代码。谢谢。变量“bombMass”中有哪些值?可能您正在将转动惯量设置为零。MassData bombMass=新MassData();质量,质量=10f;非常感谢,如果我把转动惯量设为1,它就工作了(炸弹旋转得很好):)