2014-05-09 11 views
0

在我的遊戲中,我使用了物理編輯器作爲精靈。而我把它擴展到大尺寸這樣物理編輯器不允許縮放精靈(Andengine)

sprite.setScale(screenwidth/20/sprite.getWidth()); 

,並把它添加到物理身體像這樣

Body = PhysicsFactory.createBoxBody(physicsWorld, sprite, BodyType.DynamicBody, FIXTURE_DEF); 

現在在遊戲中,精靈看起來大,因爲它是縮放,但是物理體附加到它很小(沒有按比例增加大小)。

那麼現在該做些什麼來縮放身體本身。 請給我建議一些想法。

回答

0
  1. 首先,將以下夾具定義成onPopulateScene()方法:

    FixtureDef BoxBodyFixtureDef = 
    PhysicsFactory.createFixtureDef(20f, 0f, 0.5f); 
    
  2. 接着,將下面的代碼創建三個矩形和之後的其相應的 機構上一步的夾具定義:

    Rectangle staticRectangle = new Rectangle(cameraWidth/
    2f,75f,400f,40f,this.getVertexBufferObjectManager()); 
    staticRectangle.setColor(0.8f, 0f, 0f); 
    mScene.attachChild(staticRectangle); 
    PhysicsFactory.createBoxBody(mPhysicsWorld, staticRectangle, 
    BodyType.StaticBody, BoxBodyFixtureDef); 
    
    Rectangle dynamicRectangle = new Rectangle(400f, 120f, 40f, 40f, 
    this.getVertexBufferObjectManager()); 
    dynamicRectangle.setColor(0f, 0.8f, 0f); 
    mScene.attachChild(dynamicRectangle); 
    Body dynamicBody = PhysicsFactory.createBoxBody(mPhysicsWorld, 
    dynamicRectangle, BodyType.DynamicBody, BoxBodyFixtureDef); 
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
    dynamicRectangle, dynamicBody); 
    
    Rectangle kinematicRectangle = new Rectangle(600f, 100f, 
    40f, 40f, this.getVertexBufferObjectManager()); 
    kinematicRectangle.setColor(0.8f, 0.8f, 0f); 
    mScene.attachChild(kinematicRectangle); 
    Body kinematicBody = PhysicsFactory.createBoxBody(mPhysicsWorld, 
    kinematicRectangle, BodyType.KinematicBody, BoxBodyFixtureDef); 
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
    kinematicRectangle, kinematicBody); 
    
  3. 最後,添加以下代碼來自前一步驟的定義之後設置 線速度和角速度爲我們的運動體:

kinematicBody.setLinearVelocity(-2f,0F );
kinematicBody.setAngularVelocity((float)(-Math.PI));

+0

是的我註冊物理連接器,但縮放不起作用。 –

+0

我用正式的教程步驟更新了我的答案,可能會在您的實施中抱怨它,如果沒有錯誤,您應該聯繫andengine支持 – Izu