2013-07-09 64 views
1

我想做一個嘟嘟跳,就像我爲球員和平臺創建兩個身體一樣,但不是在平臺身體上彈跳,玩家可以跳到身體的Y座標上的所有線上。不知道爲什麼。AndEngine Box2D - 矩形主體轉換爲線?

private void creerPlateformes(int n) 
{ 
    int pX[] = new int[n]; 
    int pY[] = new int[n]; 
    pX[0] = CAMERA_WIDTH/ 2-60; 
    pY[0] = 780;  
    for (int i=0;i<n;i++) 
    { 
     if (i!=0) 
     { 
      final Random r = new Random();   
      pX[i] = r.nextInt(464-16)+16; 
      pY[i] = pY[i-1]-r.nextInt(200-100)+100; 
     } 

    plateforme[i] = new Sprite(pX[i], pY[i], mPlateformeTextureRegion, getVertexBufferObjectManager()); 
    plateforme[i].setScale(1); 
    plateforme[i].setUserData("plateforme"); 
    final FixtureDef PLATEFORME_FIX = PhysicsFactory.createFixtureDef(0.0f, 0.0f, 0.0f); 
    plateformeBody[i] = PhysicsFactory.createBoxBody(physicsWorld, plateforme[i], BodyType.StaticBody, PLATEFORME_FIX); 
    plateformeBody[i].setUserData("plateforme"); 
    scene.attachChild(plateforme[i]); 
    } 

} 

如果您需要更多代碼,請告訴我,但我認爲問題可能在那裏。

+0

我無法理解發生了什麼。是這樣的:玩家在沒有平臺的區域反彈嗎? Y位置似乎是正確的,但X位置不正確。這是問題嗎? –

+0

是的,我真的不知道爲什麼.. –

+0

這只是一個猜測,但雪碧「plateforme [i]」是否包含透明像素?框2D使用的形狀的邊界框將與Sprite邊界框相同。 –

回答

1

,你在評論中說,它不是,該球員的身體移動,而不是你感動的精靈獨自;-)

傳感器事件移動播放器,你可以使用類似

playerBody.setLinearVelocity (float vX, float vY) 

與這取決於你的傳感器的x值,y值應該是喜歡你的跳躍速度恕我直言

,那麼你就不需要再移動精靈,因爲它會隨着物體移動,移動

+0

謝謝,你解決了我的問題。就是這樣!我不想無聊,但是,我又遇到了另一個小問題,我的加速度計似乎要很長時間才能做出反應。或者您看到一種很長的反應時間?我使用LinearDumping,但它不是真的像我想.. –

+0

嗯。我會請求你把這個問題放在另一個問題上,因爲它會超出這個問題的範圍。添加一些代碼和我或一些用戶將嘗試幫助;-) –

+0

好吧,順便說一句,非常感謝你的興趣:) –