第二次跳到空中

时间:2013-10-21 20:37:07

标签: android iphone box2d andengine

我有球员身体。他单跳。也就是说,当他跳跃时,他必须等待接地才能进行第二次跳跃。

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

如果有联系人,他可以跳。如果没有,他不能跳,因为他在空中。在那段代码中,如果他的头碰到任何身体,他也可以跳。所以这是错误。只有当他的脚触碰时,他才能跳。我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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