2013-10-21 26 views
0

我有球員的身體。他有單跳。也就是說,當他跳躍時,他必須等待第二跳的觸地。第二跳在空中

private ContactListener contactListener() 
    { 
     ContactListener contactListener = new ContactListener() 
     { 
      @Override 
      public void beginContact(Contact contact) 
      { 
       player.setJumping(false); 


      } 

      @Override 
      public void endContact(Contact contact) 
      { 

         player.setJumping(true); 




      } 
     }; 
     return contactListener; 
    } 

如果有聯繫人,他可以跳。如果不是,他不能跳,因爲他在空中。在該規範中,如果他的頭部觸及任何身體,他也可以跳躍。所以這裏是錯誤。只有當他的腳觸摸時,他才能跳。我怎麼解決這個問題?

+0

您使用的是Adobe集成運行時?還是你添加了'空氣'標籤作爲跳躍的上下文的一部分? – 2013-10-21 20:41:01

+0

第二個!我正在使用Andengine – immyth

+0

增加:我們如何理解身體的感人方面? – immyth

回答

1

您可以在燈具數據中使用該ID。如果您的播放器有兩個固定裝置 - 身體和頭部,然後你可以將標籤給他們,然後檢查它們,例如:

void BeginContact(b2Contact* contact) {  
    void* firstFixtureUserData = contact->GetFixtureA()->GetUserData(); 
    void* secondFixtureUserData = contact->GetFixtureB()->GetUserData(); 
    //check if fixtures was with the correct tags 
    if ((int)firstFixtureUserData == kPlayerBody || (int)secondFixtureUserData == kPlayerBody) { 
     if((int)firstFixtureUserData == kGround || (int)secondFixtureUserData == kGround) { 
     player->jump(); 
     } 
    } 
} 

我認爲這個鏈接將是有益的:jump ability